windows_第一个hello

        
HELLOWIN.C
        
/*------------------------------------------------------------------------
        
  HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
        
                 (c) Charles Petzold, 1998
        
-----------------------------------------------------------------------*/
        
#include <windows.h>
        

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
        

int WINAPI WinMain (HINSTANCE hInstance,//程序实例句柄,一个程序只能有一个实例句柄
           HINSTANCE hPrevInstance,//16位系统的垃圾产物,不用管 PSTR szCmdLine, //从外部启动发送过来的命令行参数
          int iCmdShow)//显示方式 { static TCHAR szAppName[] = TEXT ("HelloWin") ; HWND hwnd ; MSG msg ; WNDCLASwndclass ;//类 wndclass.style = CS_HREDRAW | CS_VREDRAW ;//样式 wndclass.lpfnWndProc = WndProc ;//窗口消息的回调函数,也就是我们的消息处理函数 wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuNam = NULL ; wndclass.lpszClassName= szAppName ; if (!RegisterClass (&wndclass))//注册类 { MessageBox ( NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } hwnd = CreateWindow( szAppName, // window class name//创建窗口,第一个是类名,也就是我们上面创建的那个东东 TEXT ("The Hello Program"), // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT,// initial x position CW_USEDEFAULT,// initial y position CW_USEDEFAULT,// initial x size CW_USEDEFAULT,// initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL) ; // creation parameters ShowWindow (hwnd, iCmdShow) ;//显示窗口 UpdateWindow (hwnd) ;//更新窗口,他会发送一个paint消息给窗口回调函数 while (GetMessage (&msg, NULL, 0, 0))//无限制的循环,直到返回-1,调用PostQuit函数的时候,他会接受到-1 { TranslateMessage (&msg) ; DispatchMessage (&msg) ;//转发给我们的消息回调函数处理 } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) { case WM_CREATE://当创建的时候播放声音 PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ; return 0 ; case WM_PAINT://当需要重画的时候 hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rect) ; DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY://当关闭窗口的时候,让我们主程序的while循环停止 PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ;//其他消息就不管,交给下一个处理 }
posted @ 2013-08-13 09:54  宝贝,我永远都在  阅读(168)  评论(0)    收藏  举报