// 初始化窗口类对象,并使用 RegisterClass 函数注册到操作系统// 使用 CreateWindow 创建窗口,更新(UpdateWindow)并显示(ShowWindow)窗口// 编写消息泵,使用 GetMessage 获取消息并通过 DispatchMessage 分发消息#include <windows.h>LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch (uMsg) { // 当用户点击关闭按钮时会产生 WM_CLOSE 消息 case WM_CLOSE: { DestroyWindow(hWnd); break; } // 当调用 DestroyWindow 函数的时候会产生下面的消息 case WM_DESTROY: { PostQuitMessage(0); break; } } // 对于任何不关系的消息,我们应该使用操作系统的默认行为做出响应 return DefWindowProc(hWnd, uMsg, wParam, lParam); }int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ // 1.注册窗口类,必须需要提供的成员有回调函数和窗口类名 WNDCLASS WndClass{}; WndClass.lpfnWndProc = WndProc; WndClass.lpszClassName = L"myclass"; if(!RegisterClass(&WndClass)) { MessageBoxA(NULL, "窗口类注册失败", "错误消息", MB_OK | MB_ICONERROR); return -1; } // 2.使用注册好的窗口类创建窗口并显示更新窗口 HWND hWnd = CreateWindow(L"myclass", L"window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); ShowWindow(hWnd, SW_SHOWNORMAL); UpdateWindow(hWnd); // 3.编写消息泵接收并分发消息,【消息本质上是一个结构体】 MSG msg{}; while(GetMessage(&msg, NULL, 0, 0)) { DispatchMessage(&msg); } return 0;}