學習window編程1

在學校一直作linux開發,工做作windows開發。今天看了一下最基本的windows API窗體編程。API是基於函數的,C語言。對這種風格的第一次接觸,仍是在linux上使用MiniGUI開發的時候。linux

在這個過程 中,分爲兩部分,一是結構體,二是函數(可能還有一些宏定義)。對於事件的處理都是經過向窗體註冊一個回調函數,回調函數有四個參數,分別爲窗體資源標識符,事件ID,以及兩個事件參數。編程

結構體:windows

typedef struct _WNDCLASS {
UINT style;// 窗口類型
WNDPROC lpfnWndProc;//窗口處理函數
int cbClsExtra;//窗口擴展
int cbWndExtra;//窗口實例擴展
HINSTANCE hInstance;//實例句柄
HICON hIcon;//窗口的最小化圖標
HCURSOR hCursor;//窗口鼠標光標
HBRUSH hbrBackground;//窗口背景色
LPCTSTR lpszMenuName;//窗口菜單
LPCTSTR lpszClassName;// 窗口類名
} WNDCLASS, *LPWNDCLASS;
其包含了對窗體的配置參數(類型,圖標,菜單等等),其中包括了須要註冊的回調函數。

回調函數完成對事件的處理,其通常內容爲:函數

switch(TYPE) {spa

case TYPE_1:命令行

do_1(...);設計

break;code

case TYPE_2:事件

do_2(...);資源

break;

        ...

...

...

default:

return define_do(_1,_2,_3,_4);

return 0;

}
在C/C++中程序入口爲main(int argc, char* argv[]),而在此爲WinMain,其有四個參數,分別爲APP當前實例,APP先前的實例,命令行,和窗體的顯示狀態。

一個窗體的建立分爲四個步驟:

1.設計窗體

2.註冊窗體

3.生成窗體

4.顯示及更新窗體

第一步,對WNDCLASS進行參數配置,第二調用RegisterClass函數註冊,第三調用CreateWindow生成,最後調用ShowWindow顯示,調用UpdateWindow更新窗體。在這應該注意RegisterClass,每產生不一樣的窗體必須從新註冊。

窗體的繪製完成後則須要事件進行捕捉。

通常形式爲:

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

具體處理在前述的回調函數中。

相關文章
相關標籤/搜索