WNDCLASS这个构造和CWND之间什么关系啊
WNDCLASS这个结构和CWND之间什么关系啊?WNDCLASS这个结构和CWND之间什么关系啊?CreateWindow之前必须要Reg
WNDCLASS这个结构和CWND之间什么关系啊?
WNDCLASS这个结构和CWND之间什么关系啊?
CreateWindow之前必须要RegisterClass吗?
不太明白一个窗口从无到有的过程,求大神指点。
[解决办法]
窗口的创建过程需要四个步骤,下面列出了创建步骤和这个过程中涉及的类和函数:
1.设计一个窗口类//很多特征(光标,图标,背景)WNDCLASS
2.注册窗口类//RegisterClass
3.创建窗口//首先定义句柄 如:HWND hwnd; CreateWindow
4.显示及更新窗口//显示窗口:ShowWindow,更新窗口:UpdateWindow
[解决办法]
++
5)还有一个最重要的窗口过程。
另外,不是只有这些,程序就能很好执行的。
6)还需要一个消息循环。
随着消息循环的不断执行,就会不断调用窗口函数。
这样窗口,才有各种不同的行为。
[解决办法]窗口过程
会在注册窗口类的时候初始化,在 WNDCLASS 的窗口过程成员中,
然后 RegisterClass 这个窗口类WNDCLASS
或者RegisterClassEx 这个窗口类WNDCLASSEX
这时,就会注册窗口类的,窗口过程回调函数。
CreateWindow 返回 一个句柄,这个句柄会和CreateWindow 的第一个参数lpClassName 联系起来。
就是建一个表 记录,句柄和窗口类(类名)之间的关系。
然后程序在处理消息循环的时候,系统就会调用,窗口过程回调函数。
这是通过HWND hWnd-->LPCTSTR lpClassName--> WNDCLASS wc --->WNDPROC wc.lpfnWndProc;
这样联系起来的。
CreateWindow之前,要么名为lpClassName窗口类(WNDCLASS)已经注册,
要么自己调用RegisterClass 或者RegisterClassEx 注册 名为lpClassName窗口类(WNDCLASS)
不是一定要RegisterClass的
RegisterClass 1个窗口类,可以创建若干个,窗口类名为lpClassName的窗口;
共享同一个窗口过程(WNDPROC类型的 wc.lpfnWndProc;)