窗口创建过程
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);