1 //Windows.h文件中包含应用程序中所需的数据类型和数据结构的定义
2 #include <Windows.h>
3 #include <tchar.h>
4
5 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //窗口函数说明
6 //------------------------------以下是入口函数的代码------------------------------
7 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
8 {
9 WNDCLASSEX wcex;
10 HWND hWnd;
11 MSG msg;
12 TCHAR szWindowClass[] = L"窗口示例"; //窗口类名
13 TCHAR szTitle[] = L"My Windows"; //窗口标题名
14
15 //------------------------------以下初始化窗口类------------------------------
16 wcex.cbSize = sizeof(WNDCLASSEX); //窗口类的大小
17 wcex.style = 0; //窗口类型为默认类型
18 wcex.lpfnWndProc = WndProc; //窗口处理函数为WndProc
19 wcex.cbClsExtra = 0; //窗口类无扩展
20 wcex.cbWndExtra = 0; //窗口实例无扩展
21 wcex.hInstance = hInstance; //当前实例句柄
22 wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
23 //窗口的图标为默认图标
24 wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
25 //窗口采用箭头光标
26 wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景为白色
27 wcex.lpszMenuName = NULL; //窗口中无菜单
28 wcex.lpszClassName = szWindowClass; //窗口类名为“窗口示例”
29 wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
30 //窗口的小图标为默认图标
31
32 //------------------------------以下进行窗口类的注册------------------------------
33 if (!RegisterClassEx(&wcex)) //如果注册失败则发出警告
34 {
35 MessageBox(NULL, _T("窗口类注册失败!"), _T("窗口注册"), NULL);
36 return 1;
37 }
38 //------------------------------以下创建窗口------------------------------
39 hWnd = CreateWindow(
40 szWindowClass, //窗口类名
41 szTitle, //窗口实例的标题名
42 WS_OVERLAPPEDWINDOW, //窗口的风格
43 CW_USEDEFAULT, CW_USEDEFAULT, //窗口左下角坐标为默认值
44 CW_USEDEFAULT, CW_USEDEFAULT, //窗口的高和宽为默认值
45 NULL, //此窗口无父窗口
46 NULL, //此窗口无主菜单
47 hInstance, //创建此窗口应用程序的当前句柄
48 NULL //不使用该值
49 );
50 if (!hWnd) //如果创建窗口失败则发出警告
51 {
52 MessageBox(NULL, L"创建窗口失败!", _T("创建窗口"), NULL);
53 return 1;
54 }
55 ShowWindow(hWnd, nCmdShow); //显示窗口
56 UpdateWindow(hWnd); //绘制用户区
57 while (GetMessage(&msg, NULL, 0, 0)) //消息循环
58 {
59 TranslateMessage(&msg);
60 DispatchMessage(&msg);
61 }
62
63 return(int)msg.wParam; //程序终止时将信息返回系统
64 }
65 //------------------------------以下是窗口函数的代码------------------------------
66 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
67 {
68 switch (message)
69 {
70 case WM_DESTROY:
71 PostQuitMessage(0); //调用PostQuitMessage发出WM_QUIT消息
72 break;
73 default:
74 return DefWindowProc(hWnd, message, wParam, lParam);
75 //默认时采用系统消息默认处理函数
76 break;
77 }
78 return 0;
79 }