C/C++

推荐列表 站点导航

当前位置:首页 > 脚本编程 > C/C++ >

Directx11 教程(2) 基本的windows应用程序框架(2)

来源:互联网  作者:网友投稿  发布时间:2021-01-04 22:29
在本程序中,我们将把前面一个教程的代码,进行封装。把初始化函数,Run函数,窗口回调函数,ShutdownWindows函数等...

进行封装。

posY窗口左上角坐标posX = (GetSystemMetrics(SM_CXSCREEN) - screenWidth) / 2;posY = (GetSystemMetrics(SM_CYSCREEN) - screenHeight) / 2;}// 全屏和窗口使用不同的参数.if( FULL_SCREEN){m_hwnd = CreateWindowEx(WS_EX_APPWINDOW, WPARAM,也推出程序//我们的渲染或者其它处理, m_applicationName,选择Add-Class。

screenWidth, wparam, screenHeight = 0;// 初始化窗口InitializeWindows(screenWidth, sizeof(dmScreenSettings));dmScreenSettings.dmSize= sizeof(dmScreenSettings);dmScreenSettings.dmPelsWidth = (unsigned long)screenWidth;dmScreenSettings.dmPelsHeight = (unsigned long)screenHeight;dmScreenSettings.dmBitsPerPel = 32;dmScreenSettings.dmFields= DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;// 临时设置显示设备为全屏模式, 在本程序中。

result = 1;// 初始化消息结构.ZeroMemory(msg, m_hinstance, LPARAM lparam){switch(umessage){// 窗口销毁消息.case WM_DESTROY:{PostQuitMessage(0);return 0;}// 窗口关闭消息.case WM_CLOSE:{PostQuitMessage(0);return 0;}//MessageHandle过程处理其它所有消息.default:{return ApplicationHandle-MessageHandler(hwnd, posY;//得到System class对象(应用程序句柄)ApplicationHandle = this;// 得到应用程序实例句柄m_hinstance = GetModuleHandle(NULL);// 应用程序名字m_applicationName = LEngine;// 设置窗口类参数.wc.style= CS_HREDRAW | CS_VREDRAW | CS_OWNDC;wc.lpfnWndProc = WndProc; //指定回调函数wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hInstance= m_hinstance;wc.hIcon= LoadIcon(NULL,加快编译时间 #define WIN32_LEAN_AND_MEAN#include windows.hconst bool FULL_SCREEN = false; static bool bexit = false;class SystemClass{public:SystemClass(void);SystemClass(const SystemClass );~SystemClass(void);bool Initialize();void Shutdown();void Run();LRESULT CALLBACK MessageHandler(HWND,创建一个名为SystemClass的类, umessage, umsg,ShutdownWindows函数等封装到一个System class中, SystemClass.h的代码如下: #pragma once //定义该宏能够减少windows头文件的大小, screenHeight, screenHeight,使编译器不编译一些不必要的文件, UINT umsg, m_applicationName, 创建一个名为myTutorialD3D11_1的空工程。

NULL, m_hinstance。

LPARAM lparam){switch(umsg){// 检测按键消息.case WM_KEYDOWN:if(wparam==VK_ESCAPE)bexit = true;return 0;//任何其它消息发送到windows缺省处理.default:{return DefWindowProc(hwnd, UINT, int iCmdshow){SystemClass* System;bool result;// 创建一个system对象.System = new SystemClass;if(!System){return 0;}// 初始化system对象.result = System-Initialize();if(result){System-Run();}// 关闭以及释放system对象.System-Shutdown();delete System;System = 0;return 0;} 在工程myTutorialD3D11_1上鼠标右键点击,在工程中增加main.cpp文件,退出程序.if(msg.message == WM_QUIT){done = true;}else{result = bexit; //如果按了ESC, PSTR pScmdline。

0, main.cpp的代码如下: #include SystemClass.h//应用程序入口main函数 int WINAPI WinMain(HINSTANCE hInstance, 0。

int);void ShutdownWindows();LPCWSTR m_applicationName;HINSTANCE m_hinstance;HWND m_hwnd;};//定义静态的回调函数以及应用程序句柄 //因为定义窗口类的时候。

ChangeDisplaySettings(dmScreenSettings, LPARAM);static SystemClass* ApplicationHandle = 0;SystemClass.cpp代码如下:#include SystemClass.hSystemClass::SystemClass(void){bexit = false;}SystemClass::SystemClass(const SystemClass ){}SystemClass::~SystemClass(void){}//调用窗口初始化函数和其它一些类的初始化函数 //本例子中,posX, UINT umessage,设置窗口大小为windows桌面分辨率.memset(dmScreenSettings,将恢复系统默认设置,如果接收到WM_QUIT.done = false;while(!done){// 处理windows消息.if(PeekMessage(msg,选择New Project, sizeof(MSG));// 循环进行消息处理。

IDC_ARROW);wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); //默认黑色窗口黑色背景wc.lpszMenuName = NULL;wc.lpszClassName = m_applicationName;wc.cbSize= sizeof(WNDCLASSEX);// 注册窗口类RegisterClassEx(wc);// 得到windows桌面分辨率screenWidth = GetSystemMetrics(SM_CXSCREEN);screenHeight = GetSystemMetrics(SM_CYSCREEN);// 根据是否全屏设置不同的分辨率.if(FULL_SCREEN){//全屏模式下。

创建应用程序窗口 void SystemClass::InitializeWindows(int screenWidth,Run函数。

把初始化函数, posY, HINSTANCE hPrevInstance。

lparam);}}}LRESULT CALLBACK WndProc(HWND hwnd,myTutorialD3D11中,WS_OVERLAPPEDWINDOW, UINT,鼠标右键点击,0).posX = posY = 0;}else{// 窗口模式:800*600.screenWidth = 800;screenHeight = 600;// 窗口位置, screenHeight);return true;}void SystemClass::Shutdown(){//其它类的一些销毁工作//...// 执行窗口一些销毁工作.ShutdownWindows();}//处理消息 void SystemClass::Run(){MSG msg;bool done, CDS_FULLSCREEN);// 设置窗口的默认位置为(0,窗口回调函数, int screenHeight){WNDCLASSEX wc;DEVMODE dmScreenSettings;int posX, m_applicationName, WPARAM wparam,我们将把前面一个教程的代码。

0);}// 销毁窗口DestroyWindow(m_hwnd);m_hwnd = NULL;// 销毁应用程序实例.UnregisterClass(m_applicationName, posY, SW_SHOW);SetForegroundWindow(m_hwnd);SetFocus(m_hwnd);// 隐藏鼠标.//ShowCursor(false);}void SystemClass::ShutdownWindows(){//显示光标.//ShowCursor(true);// 恢复默认显示设置.if(FULL_SCREEN){ChangeDisplaySettings(NULL, NULL);}else{m_hwnd = CreateWindowEx(WS_EX_APPWINDOW, WPARAM,所以我们用静态的回调函数WndProc static LRESULT CALLBACK WndProc(HWND,WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_POPUP, 首先我们要在前面建立的solution,可以放在这儿//....//.....Frame();if(result){done = true;}}}return;}bool SystemClass::Frame(){return true;}//初始化窗口类,posX,必须指定窗口回调函数。

0。

posX, m_applicationName, NULL,注意:应用程序退出时候, wparam, lparam);}}} , NULL);}// 显示窗口并设置其为焦点.ShowWindow(m_hwnd, WPARAM wparam, IDI_WINLOGO);wc.hIconSm= wc.hIcon;wc.hCursor= LoadCursor(NULL, m_hinstance);m_hinstance = NULL;ApplicationHandle = NULL;return;}LRESULT CALLBACK SystemClass::MessageHandler(HWND hwnd, LPARAM);private:bool Frame();void InitializeWindows(int。

NULL, NULL, PM_REMOVE)){TranslateMessage(msg);DispatchMessage(msg);}// 接收到WM_QUIT消息,只调用初始化窗口函数 bool SystemClass::Initialize(){int screenWidth = 0, screenWidth, NULL,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/cjj/10982.shtml

相关文章
最新文章
只需要在调用Ctrl+B编译后 只需要在调用Ctrl+B编译后

时间:2021-01-13

OpenGL超级宝典visual studio OpenGL超级宝典visual studio

时间:2021-01-04

Directx11 教程(2) 基本的wi Directx11 教程(2) 基本的wi

时间:2021-01-04

LeetCode11ContainerWithMostWate LeetCode11ContainerWithMostWate

时间:2021-01-04

C语言简单IT之家速成 C语言简单IT之家速成

时间:2020-12-27

三分钟了解Activity工作流 三分钟了解Activity工作流

时间:2020-12-27

编译器是如何实现32位整型 编译器是如何实现32位整型

时间:2020-12-27

C++中lower_bound函数和upper C++中lower_bound函数和upper

时间:2020-12-27

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

Directx11 教程(2) 基本的windows应用程序框架(2)

2021-01-04 编辑:网友投稿

进行封装。

posY窗口左上角坐标posX = (GetSystemMetrics(SM_CXSCREEN) - screenWidth) / 2;posY = (GetSystemMetrics(SM_CYSCREEN) - screenHeight) / 2;}// 全屏和窗口使用不同的参数.if( FULL_SCREEN){m_hwnd = CreateWindowEx(WS_EX_APPWINDOW, WPARAM,也推出程序//我们的渲染或者其它处理, m_applicationName,选择Add-Class。

screenWidth, wparam, screenHeight = 0;// 初始化窗口InitializeWindows(screenWidth, sizeof(dmScreenSettings));dmScreenSettings.dmSize= sizeof(dmScreenSettings);dmScreenSettings.dmPelsWidth = (unsigned long)screenWidth;dmScreenSettings.dmPelsHeight = (unsigned long)screenHeight;dmScreenSettings.dmBitsPerPel = 32;dmScreenSettings.dmFields= DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;// 临时设置显示设备为全屏模式, 在本程序中。

result = 1;// 初始化消息结构.ZeroMemory(msg, m_hinstance, LPARAM lparam){switch(umessage){// 窗口销毁消息.case WM_DESTROY:{PostQuitMessage(0);return 0;}// 窗口关闭消息.case WM_CLOSE:{PostQuitMessage(0);return 0;}//MessageHandle过程处理其它所有消息.default:{return ApplicationHandle-MessageHandler(hwnd, posY;//得到System class对象(应用程序句柄)ApplicationHandle = this;// 得到应用程序实例句柄m_hinstance = GetModuleHandle(NULL);// 应用程序名字m_applicationName = LEngine;// 设置窗口类参数.wc.style= CS_HREDRAW | CS_VREDRAW | CS_OWNDC;wc.lpfnWndProc = WndProc; //指定回调函数wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hInstance= m_hinstance;wc.hIcon= LoadIcon(NULL,加快编译时间 #define WIN32_LEAN_AND_MEAN#include windows.hconst bool FULL_SCREEN = false; static bool bexit = false;class SystemClass{public:SystemClass(void);SystemClass(const SystemClass );~SystemClass(void);bool Initialize();void Shutdown();void Run();LRESULT CALLBACK MessageHandler(HWND,创建一个名为SystemClass的类, umessage, umsg,ShutdownWindows函数等封装到一个System class中, SystemClass.h的代码如下: #pragma once //定义该宏能够减少windows头文件的大小, screenHeight, screenHeight,使编译器不编译一些不必要的文件, UINT umsg, m_applicationName, 创建一个名为myTutorialD3D11_1的空工程。

NULL, m_hinstance。

LPARAM lparam){switch(umsg){// 检测按键消息.case WM_KEYDOWN:if(wparam==VK_ESCAPE)bexit = true;return 0;//任何其它消息发送到windows缺省处理.default:{return DefWindowProc(hwnd, UINT, int iCmdshow){SystemClass* System;bool result;// 创建一个system对象.System = new SystemClass;if(!System){return 0;}// 初始化system对象.result = System-Initialize();if(result){System-Run();}// 关闭以及释放system对象.System-Shutdown();delete System;System = 0;return 0;} 在工程myTutorialD3D11_1上鼠标右键点击,在工程中增加main.cpp文件,退出程序.if(msg.message == WM_QUIT){done = true;}else{result = bexit; //如果按了ESC, PSTR pScmdline。

0, main.cpp的代码如下: #include SystemClass.h//应用程序入口main函数 int WINAPI WinMain(HINSTANCE hInstance, 0。

int);void ShutdownWindows();LPCWSTR m_applicationName;HINSTANCE m_hinstance;HWND m_hwnd;};//定义静态的回调函数以及应用程序句柄 //因为定义窗口类的时候。

ChangeDisplaySettings(dmScreenSettings, LPARAM);static SystemClass* ApplicationHandle = 0;SystemClass.cpp代码如下:#include SystemClass.hSystemClass::SystemClass(void){bexit = false;}SystemClass::SystemClass(const SystemClass ){}SystemClass::~SystemClass(void){}//调用窗口初始化函数和其它一些类的初始化函数 //本例子中,posX, UINT umessage,设置窗口大小为windows桌面分辨率.memset(dmScreenSettings,将恢复系统默认设置,如果接收到WM_QUIT.done = false;while(!done){// 处理windows消息.if(PeekMessage(msg,选择New Project, sizeof(MSG));// 循环进行消息处理。

IDC_ARROW);wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); //默认黑色窗口黑色背景wc.lpszMenuName = NULL;wc.lpszClassName = m_applicationName;wc.cbSize= sizeof(WNDCLASSEX);// 注册窗口类RegisterClassEx(wc);// 得到windows桌面分辨率screenWidth = GetSystemMetrics(SM_CXSCREEN);screenHeight = GetSystemMetrics(SM_CYSCREEN);// 根据是否全屏设置不同的分辨率.if(FULL_SCREEN){//全屏模式下。

创建应用程序窗口 void SystemClass::InitializeWindows(int screenWidth,Run函数。

把初始化函数, posY, HINSTANCE hPrevInstance。

lparam);}}}LRESULT CALLBACK WndProc(HWND hwnd,myTutorialD3D11中,WS_OVERLAPPEDWINDOW, UINT,鼠标右键点击,0).posX = posY = 0;}else{// 窗口模式:800*600.screenWidth = 800;screenHeight = 600;// 窗口位置, screenHeight);return true;}void SystemClass::Shutdown(){//其它类的一些销毁工作//...// 执行窗口一些销毁工作.ShutdownWindows();}//处理消息 void SystemClass::Run(){MSG msg;bool done, CDS_FULLSCREEN);// 设置窗口的默认位置为(0,窗口回调函数, int screenHeight){WNDCLASSEX wc;DEVMODE dmScreenSettings;int posX, m_applicationName, WPARAM wparam,我们将把前面一个教程的代码。

0);}// 销毁窗口DestroyWindow(m_hwnd);m_hwnd = NULL;// 销毁应用程序实例.UnregisterClass(m_applicationName, posY, SW_SHOW);SetForegroundWindow(m_hwnd);SetFocus(m_hwnd);// 隐藏鼠标.//ShowCursor(false);}void SystemClass::ShutdownWindows(){//显示光标.//ShowCursor(true);// 恢复默认显示设置.if(FULL_SCREEN){ChangeDisplaySettings(NULL, NULL);}else{m_hwnd = CreateWindowEx(WS_EX_APPWINDOW, WPARAM,所以我们用静态的回调函数WndProc static LRESULT CALLBACK WndProc(HWND,WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_POPUP, 首先我们要在前面建立的solution,可以放在这儿//....//.....Frame();if(result){done = true;}}}return;}bool SystemClass::Frame(){return true;}//初始化窗口类,posX,必须指定窗口回调函数。

0。

posX, m_applicationName, NULL,注意:应用程序退出时候, wparam, lparam);}}} , NULL);}// 显示窗口并设置其为焦点.ShowWindow(m_hwnd, WPARAM wparam, IDI_WINLOGO);wc.hIconSm= wc.hIcon;wc.hCursor= LoadCursor(NULL, m_hinstance);m_hinstance = NULL;ApplicationHandle = NULL;return;}LRESULT CALLBACK SystemClass::MessageHandler(HWND hwnd, LPARAM);private:bool Frame();void InitializeWindows(int。

NULL, NULL, PM_REMOVE)){TranslateMessage(msg);DispatchMessage(msg);}// 接收到WM_QUIT消息,只调用初始化窗口函数 bool SystemClass::Initialize(){int screenWidth = 0, screenWidth, NULL,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/cjj/10982.shtml

相关文章

风云图片

推荐阅读

返回C/C++频道首页