1 #include <windows.h> 2 3 //事件驱动编程模型 4 //一切都是窗口:窗口和句柄 5 //消息与消息队列 6 7 //最简单的应用程序必须包含两个函数 8 //WinMain 9 //WndProc 10 11 //窗口过程回调函数 12 //宏修饰符 13 LRESULT WINAPI WndProc(HWND, UINT, WPARAM, LPARAM); 14 15 //相当于int main(void) 16 //H是handler句柄 17 //Instamce实例 18 int WINAPI WinMain( HINSTANCE hInstance, 19 //实例句柄 20 HINSTANCE HprevInstance, 21 LPSTR lpszCmdLine, 22 int nCmdShow) 23 { 24 //窗口句柄 25 HWND hwnd; 26 //MSG是消息类型 27 MSG msg; 28 //窗口类 29 //typedef struct tagWNDCLASSW { 30 // UINT style; 31 // WNDPROC lpfnWndProc; 32 // int cbClsExtra; 33 // int cbWndExtra; 34 // HINSTANCE hInstance; 35 // HICON hIcon; 36 // HCURSOR hCursor; 37 // HBRUSH hbrBackground; 38 // LPCWSTR lpszMenuName; 39 // LPCWSTR lpszClassName; 40 //} WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW; 41 //1.设计一个窗口类 42 WNDCLASS wc; 43 wc.style = 0; 44 //告诉窗口类用哪个窗口过程回调 45 wc.lpfnWndProc = WndProc; 46 //窗口类额外信息 47 wc.cbClsExtra = 0; 48 //窗口句柄额外信息 49 wc.cbWndExtra = 0; 50 //窗口实例 51 wc.hInstance = hInstance; 52 //窗口图标 53 wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); 54 //窗口鼠标类型 55 wc.hCursor = LoadCursor(NULL, IDC_ARROW); 56 //画刷背景颜色 57 wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); 58 //窗口菜单 59 wc.lpszMenuName = NULL; 60 //窗口类名字 61 wc.lpszClassName = TEXT("myWndClass"); 62 63 //2.注册窗口类 64 RegisterClass(&wc); 65 66 //3.创建窗口 67 hwnd = CreateWindow( 68 TEXT("myWndClass"), 69 TEXT("窗口标题"), 70 WS_OVERLAPPEDWINDOW, 71 CW_USEDEFAULT, 72 CW_USEDEFAULT, 73 CW_USEDEFAULT, 74 CW_USEDEFAULT, 75 NULL,//父窗口句柄 76 NULL,//窗口菜单句柄 77 hInstance, 78 NULL); 79 80 //4.显示和更新窗口 81 ShowWindow(hwnd, nCmdShow); 82 UpdateWindow(hwnd); 83 84 //5.消息循环 85 while (GetMessage(&msg, NULL, 0, 0)) 86 { 87 //主要是键盘的消息是扫描码要变换成ASCII码需要翻译 88 TranslateMessage(&msg); 89 DispatchMessage(&msg); 90 } 91 92 return msg.wParam; 93 } 94 95 96 LRESULT WINAPI WndProc(HWND hwnd, 97 UINT message, 98 WPARAM wParam, 99 LPARAM lParam) 100 { 101 //窗口过程回调对各种消息进行处理 102 switch (message) 103 { 104 case WM_PAINT: 105 return 0; 106 case WM_DESTROY: 107 //销毁窗口 108 PostQuitMessage(0); 109 return 0; 110 } 111 return DefWindowProc(hwnd, message, wParam, lParam); 112 }