完全参考<<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 }