Windows下GUI編程——視窗

來源:互聯網
上載者:User

標籤:

windows下建立一個基於GUI的視窗程序很簡單,使用MFC或者Win32 API都可以實現。本文簡單整理下windows API建立GUI應用程式的基本編碼架構。

 比較常見的視窗包括:桌面視窗、應用程式視窗、對話方塊及控制項。從編程的角度而言,建立GUI應用程式需要提供入口函數WinMain的實現,其定義格式如下:

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,     LPSTR lpCmdLine, int nCmdShow) 

這裡不解釋其具體含義,感興趣的可參考《Windows程式設計》或者msdn上相關資料。

WinMain通常包含以下幾個過程:

1. 註冊視窗類別(window class);

2. 建立視窗(CreateWindow);

3. 訊息迴圈(視窗過程回調、訊息佇列)。

如果使用作業系統已經定義的視窗類別,可以省略第一步;如果不需要自訂視窗訊息處理機制,也可以省略第三步(有些資料直接調用對話方塊的預設實現,來給出最短的windows程式實現,基本上就是基於此原理)。

關於視窗類別的資料介紹,可以參考下我前段時間整理的“視窗類別(Window Class)概述”。

如果將上面三個步驟和c++程式設計語言對比下,第一步註冊視窗類別,就是為了給出新的類型的聲明和實現,這個類型內部包含了一些必要的屬性和方法,只不過作業系統提供的api在尋找該類型時使用的類型名字(字串);第二步建立視窗就是類執行個體化的過程,這裡需要指定要建立的類名稱(字串);第三步就是針對先前執行個體化類型變數的調用規約,需要按照作業系統提供的約定來使用(訊息處理及傳遞)。

下面是CreateWindowEx函數的聲明。

HWND WINAPI CreateWindowEx(  _In_      DWORD dwExStyle,  _In_opt_  LPCTSTR lpClassName,  _In_opt_  LPCTSTR lpWindowName,  _In_      DWORD dwStyle,  _In_      int x,  _In_      int y,  _In_      int nWidth,  _In_      int nHeight,  _In_opt_  HWND hWndParent,  _In_opt_  HMENU hMenu,  _In_opt_  HINSTANCE hInstance,  _In_opt_  LPVOID lpParam);

這裡面的所有參數基本就是一個視窗用於的可定製的屬性。不如視窗名稱、視窗樣式(Window Style,WS_XXX的原型)、視窗啟動的位置、菜單、父視窗等。

需要說明的是CreateWindowEx函數的傳回值,hwnd。在msdn中關於HWND類型的說明只有一句話,handle to a window,顧名思義視窗控制代碼,指向某個視窗的控制代碼。儘管vs中HWND的定義要不是void *,要不是int類型,但從實際使用來看,視窗控制代碼是全域的,屬於作業系統維護的,而且可以跨進程使用的,也許這也是 FindWindow函數的一種實現方法(另外一種說法是微軟為了保持和16位作業系統相容而提供的這種機制)。鑒於此,HWND可以看成是作業系統維護的內部結構,應用程式不應該試圖瞭解改結果的內部實現。

 

Windows下GUI編程——視窗

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.