Win32 Hello World程序

完全参考<<Windows程序设计 第五版>>

Win32 Hello World程序源码如下:

 1 #include <windows.h>
 2 
 3 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 4 
 5 int WINAPI WinMain(HINSTANCE hInstance,
 6                    HINSTANCE hPrevInstance,
 7                    LPSTR lpCmdLine,
 8                    int nShowCmd)
 9 {
10     static TCHAR lpszAppName[] = TEXT("HelloWin");
11     HWND      hwnd;
12     MSG       msg;
13     WNDCLASS  wc;
14 
15     wc.style         = CS_HREDRAW | CS_VREDRAW;
16     wc.lpfnWndProc   = WndProc;
17     wc.cbClsExtra    = 0;
18     wc.cbWndExtra    = 0;
19     wc.hInstance     = hInstance;
20     wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
21     wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
22     wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
23     wc.lpszMenuName  = NULL;
24     wc.lpszClassName = lpszAppName;
25 
26     // 注册窗口类
27     if (!RegisterClass(&wc))
28     {
29         MessageBox(NULL, TEXT("This program requires Windows NT!"),
30             lpszAppName, MB_ICONERROR);
31         return 0;
32     }
33 
34     // 创建应用程序主窗口
35     hwnd = CreateWindow(lpszAppName,
36         TEXT("The Hello Program"),
37         WS_OVERLAPPEDWINDOW,
38         CW_USEDEFAULT,
39         CW_USEDEFAULT,
40         CW_USEDEFAULT,
41         CW_USEDEFAULT,
42         NULL,
43         NULL,
44         hInstance,
45         NULL);
46 
47     // 显示窗口
48     ShowWindow(hwnd, nShowCmd);
49     UpdateWindow(hwnd);
50 
51     // 消息循环 
52     while (GetMessage(&msg, NULL, 0, 0))
53     {
54         TranslateMessage(&msg);
55         DispatchMessage(&msg);
56     }
57 
58     return msg.wParam;
59 }
60 
61 //
62 // 窗口过程函数
63 //
64 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
65 {
66     HDC         hdc;
67     PAINTSTRUCT ps;
68     RECT        rect;
69 
70     switch (message)
71     {
72     case WM_CREATE:
73         return 0;
74     case WM_PAINT:
75         hdc = BeginPaint(hwnd, &ps);
76         GetClientRect(hwnd, &rect);
77         DrawText(hdc, TEXT("Hello World!"), -1, &rect, 
78             DT_SINGLELINE | DT_CENTER | DT_VCENTER);
79         EndPaint(hwnd, &ps);
80         return 0;
81     case WM_DESTROY:
82         PostQuitMessage(0);
83         return 0;
84     }
85 
86     return DefWindowProc(hwnd, message, wParam, lParam);
87 }

posted on 2012-07-22 15:47  wangyao1052  阅读(3024)  评论(0编辑  收藏  举报

导航