Win32程序入口函數

入口函數
      每一個Win32程序都有一個入口函數,一般來說入口函數的名字是WinMain
      在大多數的Win32程序中,WinMain函數要爲應用程序完成以下幾個步驟:
      1.註冊窗口類
      2.創建主窗口
      3.創建消息循環
1.註冊窗口類
      每個窗口必須有一個窗口類。窗口類定義了一個窗口的屬性,例如樣式,圖標,光標,菜單名稱和窗口過程名稱。
      第一步是用類信息填充一個WNDCLASS結構。然後把WNDCLASS結構傳遞給RegisterClass函數。示例程序創建窗口類GenericAppClass的過程如下:


    wc.lpszClassName="GenericAppClass";
    wc.lpfnWndProc=MainWndProc;
    wc.style=CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
    wc.hInstance=hInstance;
    wc.hCursor=LoadIcon(NULL,IDI_APPLICATION);
    wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName="GenericAPPMenu";
    wc.cbClsExtra=0;
    wc.cbWndExtra=0;

    RegisterClass(&wc);

 

2.創建主窗口
      你可以通過調用CreatWindow函數來創建窗口,示例程序創建窗口的過程如下:

      hWnd = CreateWindow( "GenericAppClass",
                                              "Generic Application",
                                              WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,
                                              0,
                                              0,
                                              CW_USEDEFAULT,
                                              CW_USEDEFAULT,
                                              NULL,
                                              NULL,
                                              hInstance,
                                              NULL
                                             );

       第一個參數是之前註冊過的類的名字。剩下的參數指定了其它窗口屬性。調用這個函數可以創建一個窗口,但是你只有在這之後調用ShowWindow這個函數,系統纔會顯示之前創建的窗口。示例程序顯示窗口過程如下:
    ShowWindow(hWnd,nCmdShow);
 
3.創建消息循環
      一旦主窗口被創建和顯示,WinMain函數可以執行它的主任務,即從示例程序消息隊列中讀取消息,然後把消息分配給適合的窗口處理。
      系統不會直接把輸入傳遞給應用程序。它會把用戶通過鼠標和鍵盤的輸入的消息同系統消息,其它應用程序消息一起,放到消息隊列中。示例程序必須從消息隊列中獲取這些輸入消息,然後分配給可以處理這些消息的窗口處理過程。
     示例程序使用的消息循環如下:

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

          TranslateMessage( &msg );
          DispatchMessage( &msg );
         
          }

 

    GetMessage函數可以從消息隊列中獲取消息。DispatchMessage函數可以把消息分配給合適的窗口處理過程。TranslateMessage函數可以把虛擬鍵碼(virtual-key)翻譯成字符消息。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章