1、窗口的注册
1.1 窗口类的分类
1.1.1 系统全局的窗口类。比如按钮(BUTTON)、文本("EDIT")编辑框等。不需要注册
1.1.2 运用程序的全局窗口类。可以在运用程序中exe和dll所有模块中使用全局窗口类。
1.1.3 局部窗口类。只能在本模块中使用的窗口类。
2.2 实现窗口类的注册
2.2.1 系统全局的窗口类,无需注册,直接使用。
使用CreateWindow函数,在CLASSNAME中制定系统已经定义好的窗口类型名称即可。
2.2.2 应用程序的全局窗口类,需要用代码实现注册,在注册时需要增加CS_GLOBALCLASS定义实现方式:
WNDCLASS wc ={0};
wc.style= CS_GLOBALCLASS|CS_HREDRAW...'
RegisterClss(&wc);
2.2.3 局部窗口类,不能增加CS_GLOBALCLASS定义
使用 ResgisterClss和RegisterClassEx注册
CS_HREDRAW 窗口水平变化,重新绘制窗口。
CS_WREDRAW 窗口锤子变化,重新绘制窗口
CS_DBCLICK 窗口可以接受鼠标双击消息
CS_GLOBALCLASS 创建应用程序全局窗口类
CS_BYTEALIGNWINDOW 窗口对齐方式,以8的倍数对齐
CS_BYTEALIGNCLIENT 窗口客户区对齐方式
CS_CLASSDC 所有这种类型的窗口使用同一个DC
CS_OWNDC 每个串钩拥有自己的DC
CS_PARENTDC 使用父窗口的DC
CS_SAVEBITS (提高了绘图性能,消耗了资源)使用位图保存窗口界面,可以提高窗口界面的刷新性能
2.2.5 窗口类的附加数据 (cbClsExtra)
在窗口类的数据信息中添加自己的信息
cbClsExtra用于添加信息的内存的大小
SetClassLong 将信息保存到内存中
GetClassLong 将信息从内存中取出
2.2.6 窗口附加数据
在窗口的数据信息中添加自己的信息。
cbWndExtra 用于添加信息的内存的大小
SetWindowLong 将信息保存到内存中
GetWindowLong 将信息从内存中取出
2.4 创建窗口类是如何定位窗口类
2.4.1 查找应用程序局部的窗口类.如果找到,执行2.4.2,否则执行2.4.3
2.4.2 如果找到名称一致的窗口,会比较HINSTANCE句柄。如果一致,就使用找到的窗口类信息创建窗口;
如果不同,继续查找,执行2.4.3。
2.4.3如果未找到名称一致的窗口类,会继续在应用程序全局窗口类中查找。如果找到就执行2.2.4,否则执行2.4.5
2..4.4 全局窗口类知道一致的,使用找到的窗口类信息创建窗口。
2.4.5 系统全局窗口类中查找。如果找到,创建窗口,否则返回失败。