VC++學習筆記之建立視窗

來源:互聯網
上載者:User

1、設計視窗類別。
          一看到“設計”兩個字,大家肯定就會想入非非。視窗的建立過程類似於汽車的製造過程。我們在生產一個型號的汽車之前,首先要對該型號的汽車進行設計,畫出結構,設計零組件,起一個名字“奧迪A8”。完成設計後就可以按照這個型號生產汽車了。
當然,在我們設計視窗時,不像設計汽車那麼複雜,因為Windows 已經為我們定義好了一個視窗的基本屬性,我們只要進行屬性設定就可以了。要達到做填空題的效果,只能通過結構體來完成,視窗的特徵就是由WNDCLASS結構體來定義的。WNDCLASS結構
體的定義如下:
        typedef struct _WNDCLASS{
                 UINT style;   //設定視窗的樣式
                 WNDPROC   lpfnWndProc;  //“lpfnWndProc”是一個函數指標,指向視窗過程函數(一個回呼函數)。
                                                                    /*在這裡寫一個小插曲,解釋一下回呼函數和視窗過程函數。回呼函數的實現機制:它不是由該函數的實現方直接調用(只是提供),而是在特定的事件或條件發生時由“另外一方”調用的,用於對該事件或條件進行響應。(1)定義函數    (2)提供函數的一方在初始化的時候,將回呼函數的函數指標註冊給調用者(通常是作業系統)。   (3)當特定的事件或是條件發生時,調用者調用函數。       視窗過程函數被調用的過程:(1)將本函數地址賦值給“lpfnWndProc”成員變數。(2)調用“RegsiterClass(&wndclass)”註冊視窗類別,讓系統獲得我們編寫的視窗過程函數的地址。(3)當應用程式接收到某一視窗的訊息時,調用DispatchMessage(&msg)將訊息回傳給系統。然後系統調用視窗過程函數對訊息進行處理。*/
                 int cbClsExtra;  //設定類附加記憶體空間,被視窗類別的所有視窗所共用。
                 int cbWndExtra; //設定視窗附加記憶體,用於儲存視窗特有的資料。
                 HANDLE hInstance;   //指定包含視窗過程的“主程式”的執行個體控制代碼
                 HICON hIcon;  //指定視窗類別的表徵圖控制代碼。可以使用LoadIcon函數來載入一個表徵圖資源,返回系統分配給該表徵圖的控制代碼。
                 HCURSOR hCursor;   //指定視窗類別的游標控制代碼。可以調用LoadCursor函數來載入一個游標資源,返回系統分配該游標的控制代碼。
                 HBBUSH hbrBackground;   //指定視窗類別的背景畫刷控制代碼。可以調用GetStockObject函數來得到系統的標準畫刷。
                 LPCTSTR  lpszMenuName;  //指定菜單資源。
                 LPCTSSTR  lpsz ClassName;  //指定視窗類別的名字,就像新設計了一型號的汽車,給該型號的汽車起個名字。
        }   WNDCLASS;
       
       2、註冊視窗類別
       就像設計完汽車後,國家有關部門審批通過之後,該種類型的汽車才可以生產。同樣地,設計完視窗類別(WNDCLASS)後,調用RegisterClass函數對其進行註冊,然後才可以建立該類型的視窗。註冊函數原型如下:
       ATOM RegisterClass(CONST  WNDCLASS  *lpWndClass);

       3、建立視窗
       用CreateWindow函數產生這種類型的視窗。

       4、顯示及更新視窗
       (1)調用ShowWindow函數來顯示視窗。
             BOOL ShowWindow(
                   HWND hWnd ,  //視窗控制代碼
                   int nCmdShow   //視窗顯示狀態
             );
        (2)調用ShowWindow函數來重新整理視窗
             BOOL  UpdateWindow(
                   HWND hWnd  //建立好的表單
              );

朋友,如果您有什麼真知灼見,可以加“新浪微博”/MSN哦,starrycheng@live.com,我們大家一起討論,一起研究。

最後,幫忙加一分吧,想整個空間系統。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.