Win32应用程序的最基本代码框架

#include<windows.h>

 

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

 

INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, INT iCmdShow)

{

    HWND                hWnd;

    MSG                 msg;

    WNDCLASS            wndClass;

   

    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.lpszMenuName  = NULL;

    wndClass.lpszClassName = TEXT("GettingStarted");

   

    RegisterClass(&wndClass);

   

    hWnd = CreateWindow(

       TEXT("GettingStarted"),   // window class name

       TEXT("Getting Started"),  // 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);

   

    while(GetMessage(&msg, NULL, 0, 0))

       {

if( msg.hwnd )  // 窗口消息     

              {

TranslateMessage( &msg );

DispatchMessage( &msg );

              }

   else                   //  线程消息            

{

              switch( msg.message )

                     {

                     case xxx:

                ……

                            break;

                     ……      

                     }

}

    }

return msg.wParam;

}  // WinMain End

 

 

// 消息处理函数

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,

                      WPARAM wParam, LPARAM lParam)

{

    HDC          hdc;

    PAINTSTRUCT  ps;

   

    switch(message)

    {

//case WM_CLOSE:  /* 这块注释的内容可有可无,因为DefWindowProc 对WM_CLOSE消息的处理就是调用DestroyWindow() */

//    DestroyWindow(hWnd);

//    return 0;

    case WM_DESTROY:

       PostQuitMessage(0);

       return 0;

    default:

       return DefWindowProc(hWnd, message, wParam, lParam);

    }

} // WndProc End

 

作者: houbangen   发布时间: 2010-10-16