1 #include<windows.h> 2 //通用字符串的定义头文件 3 #include<tchar.h> 4 5 6 7 //消息回调函数 8 LRESULT CALLBACK WindowProc( 9 HWND hWnd, //窗口句柄 10 UINT uMsg, //消息ID 11 WPARAM wParam, //消息参数1 12 LPARAM lParam //消息参数2 13 ){ 14 //默认的消息处理函数 15 return DefWindowProc(hWnd, uMsg, wParam, lParam); 16 } 17 18 19 20 //WinMain主函数 21 //WinMain是一个定义的宏,自适应win32程序的版本是多字节版本还是UNICODE版本 22 //APIENTTRY 定义的宏,调用方式,此处为_stdcall 23 int APIENTRY WinMain( 24 _In_ HINSTANCE hInstance, //程序的实例句柄,程序的加载地址 25 _In_ HINSTANCE hPrevInstance, //参数已经废弃 26 _In_ LPSTR lpCmdLine, //由调用者传入的命令 27 _In_ int nCmdShow){ //由调用者传入的int型参数 28 //设计一个窗口类: 29 WNDCLASS wce; 30 wce.style = CS_HREDRAW | CS_VREDRAW; //窗口类的风格 31 wce.lpfnWndProc = WindowProc; //上面的回调函数,指向窗口过程的指针 32 wce.cbClsExtra = 0; //分配给窗口类的扩展的字节数 33 wce.cbWndExtra = 0; //分配给窗口实例的扩展的字节数 34 wce.hInstance = hInstance; //实例句柄 35 wce.hIcon = LoadIcon(hInstance, IDI_APPLICATION); //类图标的句柄 36 wce.hCursor = LoadCursor(nullptr, IDC_ARROW); //类鼠标指针的句柄 37 wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); //刷新背景所用的画刷的句柄 38 wce.lpszMenuName = NULL; //窗口类包含的菜单的名称 39 wce.lpszClassName = _T("First"); //窗口类名 40 //WNDPROC IpfnWndProc 注册好窗口类后,使用窗口类创建的窗口得到的 41 //消息全部发送给此成员存储的回调函数,其地位非常的重要 42 43 //注册窗口类 44 RegisterClass(&wce); 45 46 47 //创建窗口 48 HWND hWnd = CreateWindow( 49 _T("First"), //即我们在WNDCLASS的ipszClassName中指定的名称 50 _T("HAHA"), //窗口实例上显示的标题文字 51 WS_OVERLAPPED, //窗口样式 52 CW_USEDEFAULT, //窗口左上边坐标,默认则y省略 53 0, 54 CW_USEDEFAULT, //窗口宽度,高度 55 0, 56 nullptr, //父类窗口句柄 57 nullptr, //窗口菜单或子窗口ID 58 hInstance, //窗口所属的应用程序句柄 59 nullptr); //窗口附加补充信息 60 61 //显示刷新窗口 62 ShowWindow(hWnd, SW_SHOW); 63 UpdateWindow(hWnd); 64 65 66 67 68 //建立消息泵,循环接收处理消息 69 MSG msg = {}; 70 while (GetMessage(&msg, nullptr, 0, 0)){ 71 TranslateMessage(&msg); 72 DispatchMessage(&msg); 73 74 } 75 76 //退出程序 77 return msg.wParam; 78 }