Windows程序设计(Charles Petzold)HELLOWIN程序实现
1 /*-------------------------------------------------------------- 2 HELLOWIN.C--DisPlays "Hello, Windows!" in client area 3 (c) Charles Petzold, 1998 4 --------------------------------------------------------------*/ 5 #include <windows.h> 6 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 7 8 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreVInstance, 9 PSTR szCmdLine, int iCmdShow) 10 { 11 static TCHAR szAppName[] = TEXT("HelloWin"); 12 HWND hwnd; 13 MSG msg; 14 WNDCLASS wndclass; 15 16 wndclass.style = CS_HREDRAW | CS_VREDRAW; 17 wndclass.lpfnWndProc = WndProc; 18 wndclass.cbClsExtra = 0; 19 wndclass.cbWndExtra = 0; 20 wndclass.hInstance = hInstance; 21 wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); 22 wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); 23 wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); 24 wndclass.lpszMenuName = NULL; 25 wndclass.lpszClassName = szAppName; 26 27 if (!RegisterClass(&wndclass)) 28 { 29 MessageBox(NULL, TEXT("This progam requires Windows NT!"), 30 szAppName, MB_ICONERROR); 31 return 0; 32 } 33 34 hwnd = CreateWindow(szAppName, //window class name 35 TEXT("The Hello Program"), //window caption 36 WS_OVERLAPPEDWINDOW, //window style 37 CW_USEDEFAULT, //initial x position 38 CW_USEDEFAULT, //initial y position 39 CW_USEDEFAULT, //initial x size 40 CW_USEDEFAULT, //initial y size 41 NULL, //parent window handle 42 NULL, //window menu handle 43 hInstance, //program instance 44 NULL //creation parameters 45 ); 46 ShowWindow(hwnd, iCmdShow); 47 UpdateWindow(hwnd); 48 49 while (GetMessage(&msg, NULL, 0, 0)) 50 { 51 TranslateMessage(&msg); 52 DispatchMessage(&msg); 53 } 54 return msg.wParam; 55 } 56 57 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 58 { 59 HDC hdc; 60 PAINTSTRUCT ps; 61 RECT rect; 62 63 switch (message) 64 { 65 case WM_CREATE: 66 //PlaySound(TEXT("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC); 67 return 0; 68 69 case WM_PAINT: 70 hdc = BeginPaint(hwnd, &ps); 71 GetClientRect(hwnd, &rect); 72 DrawText(hdc, TEXT("Hello, windows!"), -1, &rect, 73 DT_SINGLELINE | DT_CENTER| DT_VCENTER); 74 EndPaint(hwnd, &ps); 75 return 0; 76 77 case WM_DESTROY: 78 PostQuitMessage(0); 79 return 0; 80 } 81 return DefWindowProc(hwnd, message, wParam, lParam);
vs新建一空的win32应用程序,将已经编辑好的代码文件添加至源文件中。在工程属性->附加依赖项中添加"winmm.lib"(或将PlaySound()函数注释掉),编译运行,查看结果。