用DirectX 12进行3D游戏编程入门前传——创建win32窗口
2018-06-22 20:47
555 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a39547a/article/details/80778490
完整程序
定义消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
定义wWinMain函数
int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { // main function }
定义窗口类
WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = NULL; wcex.hCursor = NULL; wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName = NULL; wcex.lpszClassName = L"Main"; wcex.hIconSm = NULL;
注册窗口类
RegisterClassExW(&wcex);
创建窗口
HWND hWnd = CreateWindowEx(0, "Main", "demo", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
显示窗口
ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd);
消息循环
// Main message loop: while (GetMessage(&msg, nullptr, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
处理消息
完整程序
#include <windows.h> // process message LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = NULL; wcex.hCursor = NULL; wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName = NULL; wcex.lpszClassName = L"Main"; wcex.hIconSm = NULL; RegisterClassExW(&wcex); HWND hWnd = CreateWindowEx(0, "Main", "demo", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); MSG msg; // Main message loop: while (GetMessage(&msg, nullptr, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; }阅读更多
相关文章推荐
- 用DirectX 12进行3D游戏编程入门「2」——渲染
- 用DirectX 12进行3D游戏编程入门「3」——第一个三角形显示程序
- WIN32入门---创建一个窗口
- Win32应用程序中创建控制台窗口
- Win32 SDK基础(4)—— 从零开始创建windows窗口(二)
- 一个win32窗口创建示例
- 使用WIN32 API CreateProcess()以无窗口方式创建DOS程序
- 【VC编程】笔记1--创建一个Win32的应用程序,并显示创建的窗口和菜单
- Android Studio学习笔记3创建新窗口(activity)并进行跳转
- 使用Win32 API创建不规则形状&带透明色的窗口
- Win32下创建异形窗口
- VC/win32 windows 窗口的注册和创建
- win32创建EDIT窗口,并把大小调整为父窗口工作区大小
- [Win32]窗口的创建以及消息响应基本概念
- win32窗口创建六部曲
- [Win32]创建模态窗口
- win32 api CreateWindow创建窗口控件及设置字体
- 创建一个简单的win32 应用窗口程序
- Win32应用中创建多窗口
- Windows编程入门-创建第一个Window窗口