四步创建完整的window程序, 注册窗口, 创建窗口, 消息循环, 消息处理回调函数
第一步 注册窗口
WNDCLASS结构声明
typedef struct { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm; } WNDCLASSEX, *PWNDCLASSEX;
结构体的成员对窗口类的影响如下:第二步 创建窗口 CreateWindowEx函数原型HWND CreateWindowEx(
cbSize
结构体的大小.
style
类的式样(CS_*),不要跟窗口式样(WS_*)混淆了.这个一般设置为0.
lpfnWndProc
指向这个窗口类的窗口过程的指针.
cbClsExtra
配置给这个类的额外內存.一般为0.
cbWndExtra
配置给这个类的每个窗口的额外內存.一般为0.
hInstance
应用程序实例的句柄.(从WinMain()第一个参数传递来.)
hIcon
当用戶按下Alt+Tab组合时候显示的大图标(一般为32*32).
hCursor
在我们的窗口上显示的光标.
hbrBackground
设置我们窗口背景顏色的背景刷子.
lpszMenuName
这个类的窗口所用的菜单资源的名字.
lpszClassName
类的名字.
hIconSm
在任务栏和窗口的左上角显示的小图标(一般为16*16).
DWORD dwExStyle,
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam
);
dwExStyle 窗口扩张样式
lpClassName 要创建的窗口的名字, 使用刚才注册过的窗口相同的名字
lpWindowName 窗口的Caption
dwStyle 窗口样式
x,y,nWidth, nHeight 窗口的位置及大小
hWndParent 父窗口句柄
hMenu 菜单句柄
hInstance 应用程序实例句柄
lpParam 窗口创建数据的指针
显示和更新窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
nCmdShow 是可选的参数,你可以简单地传递SW_SHOWNORMAL即可.但是用从WinMain()传来的参数可给予运行此程序的用戶选择以可视,最大化,最小化等选项...来引导程序的自由.你可以在windows快捷方式的属性中看到这些选项,参数由选项来決定.
第三步 消息循环
第四步 窗口过程