窗口創建過程
1.註冊窗口類
定義一個WNDCLASS結構體,對結構體進行初始化,然後調用RegisterClass函數註冊該窗口類:
typedef struct
{
UINT style ;//窗口的類別
WNDPROC lpfnWndProc ;//窗口過程的地址
int cbClsExtra ;
int cbWndExtra ;
HINSTANCE hInstance ;//程序實例句柄
HICON hIcon ;//程序的圖標
HCURSOR hCursor ;//遊標
HBRUSH hbrBackground ;//窗口背景
LPCTSTR lpszMenuName ;//菜單名
LPCTSTR lpszClassName ;//窗口類名
}WNDCLASS, * PWNDCLASS ;
運用RegisterClass函數來註冊窗口類。
2.運用CreateWindow函數來創建窗口。
3.顯示和更新窗口:運用ShowWindow函數和UpdateWindow函數來獲取和更新窗口。
4.消息循環
消息結構體:
typedef struct tagMSG
{
HWND hwnd ;//發出消息的窗口句柄
UINT message ;//消息
WPARAM wParam ;
LPARAM lParam ;
DWORD time ;//消息發出的時間
POINT pt ;//消息發出時鼠標的位置
}MSG, * PMSG
窗口循環實現:
while(GetMessage(.....))
{
ShowWindow(......);
UpdateWindow(......);
}
5.窗口處理過程處理消息
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
......
switch(message)
{
case 消息:
......
break;
.........
}
return DefWindowProc(hwnd,iMsg,wParam,lParam);
}
6.消息
1)WM_CREATE
觸發:當調用CreateWindow和CreateWindowEx函數創建窗口時
參數:LPCREATESTRUCT lpcs = (LPCREATESTRUCT) lParam;
2)WM_SIZE
觸發:當創建窗口時;窗口大小發生變化時
參數:fwSizeType = wParam; nWidth = LOWORD(lParam); nHeight = HIWORD(lParam);