C++Windows编程之注册窗口类
我们用Visual Studio创建一个win32项目上会自动生成一个注册窗口类。如下:
当窗口的垂直位置或窗口的高度值发生变化时,是窗口能够重新绘制其用户区域的内容Constant/value
Description
CS_BYTEALIGNCLIENT
0x1000
在X轴方向上以某边界值对齐窗口的用户区域,该属性影响窗口的宽度和显示位置的水平坐标。
CS_BYTEALIGNWINDOW
0x2000
在X轴方向上以某个边界值对齐窗口,该属性影响窗口的宽度和显示位置的水平坐标。
CS_CLASSDC
0x0040
为窗口分配一个该类的所有窗口都共享的设备描述表。由于窗口类是进程指定的,一个应用中的多个线程就可能创建属于同一个窗口了的窗口,这些线程也就可以尝试同时使用设备描述表,但此时,系统只允许一个线程成功完成其图形输出。
CS_DBLCLKS
0x0008
用户在属于该窗口类的窗口中双击鼠标时将鼠标双击消息发送到窗口处理函数。打开该函数才支持鼠标双击功能。
CS_DROPSHADOW
0x00020000
Windows XP 中允许窗口的拖拉阴影效果。通过SPI_SETDROPSHADOW打开或关闭该功能。
CS_GLOBALCLASS
0x4000
将窗口类指定为一个应用全局类,所谓的应用全局类就是在exe或dll中定义的窗口类,加载该exe或dll的进程都可以创建属于该窗口类的窗口。CS_HREDRAW
0x0002
当窗口的水平位置或窗口的宽度值发生变化时,是窗口能够重新绘制其用户区域的内容
CS_NOCLOSE
0x0200
不能使用窗口菜单中的“关闭”功能CS_OWNDC
0x0020
为该类的每个窗口分配独立的设备描述表。CS_PARENTDC
0x0080
允许子窗体使用父窗体的设备描述表。CS_SAVEBITS
0x0800
当窗口中部分内容被遮挡时,自动保存图像,当被遮挡的区域恢复时,使用自动保存的图形来进行自动恢复。
CS_VREDRAW
0x0001
lpfnWndProc指向窗口处理函数(回调函数)。
处理窗口事件,像单击鼠标会怎样,右击鼠标会怎样,都是由此函数控制的。存储指向窗口处理函数的指针。
cbClsExtra为窗口类的额外信息做记录,初始化为0。
存储指向指定分配给窗口类结构的附加字节数。
cbWndExtra记录窗口实例的额外信息,系统初始为0。
如果程序使用WNDCLASSEX注册一个从资源文件里创建的对话框,则此参数必须设置为DLGWINDOWEXTRA
hInstance存储包含窗口类的窗口处理函数的实例的句柄。窗口类结构已经把窗口的基本属性包含在其中。由于每个程序都有唯一的实例句柄,因此,窗口类的hInstance属性直接表述了该窗口的性质。即每个程序可以设置各自独立的窗口类。
hIcon存储该类窗口的图标的句柄。
一个Windows程序有两个与其相关的图标,一个是32*32位图的标准图标,称为大图标,另一个是16*16位图的小图标。hIcon存储的是标准图标。该域必须是图标资源的句柄,若为NULL,这系统提供一个默认的图标。
hCursor存贮表示窗口类光标的句柄,该域必须是一个光标资源的句柄。
一般情况下使用一个内置光标。常见内置光标如下表:
光标宏形状IDC_ARROW 标准箭头IDC_CROSS十字线IDC_HAND手IDC_WAIT沙漏IDC_SIZENS上下双箭头IDC_SIZEWE左右双箭头IDC_SIZEALL四个方向箭头IDC_HELP箭头和问好IDC_IBEAM垂直I字形IDC_SIZENESW右下角和左上角算箭头IDC_SIZENWSE左上角和右下角算箭头hbrBackground窗口类的背景刷,为背景刷句柄,也可以为系统颜色值,如果颜色值已给出,则必须转化为以下的HBRUSH的值
COLOR_ACTIVEBORDER
COLOR_ACTIVECAPTION
COLOR_APPWORKSPACE
COLOR_BACKGROUND
COLOR_BTNFACE
COLOR_BTNSHADOW
COLOR_BTNTEXT
COLOR_CAPTIONTEXT
COLOR_GRAYTEXT
COLOR_HIGHLIGHT
COLOR_HIGHLIGHTTEXT
COLOR_INACTIVEBORDER
COLOR_INACTIVECAPTION
COLOR_MENU
COLOR_MENUTEXT
COLOR_SCROLLBAR
COLOR_WINDOW
COLOR_WINDOWFRAME lpszMenuName存储以空结尾的指定类菜单资源名的字符串指针,类菜单资源名已经在资源文件中进行了定义。
COLOR_WINDOWTEXT
如果使用整数来表示菜单,则需要使用MAKEEINITSOURCE宏。如果该域为NUILL,属于该窗口类的窗口没有默认菜单。
lpszClassName存储以空结尾的字符串的指针,或存储一个原子元素(ATOM)。
ATOM本质上也是一个整数,通常用来做唯一标识。如果该域是一个原子元素,那么它必须是以前调用RegisterClass或RegisterClassEx函数所创建的类原子元素,该原子元素存于lpszClassName的低位字节中,其高位必须为0;如果lpzeClassName是一个字符串,则它指定窗口类的名字。
hIConSm存储该类窗口小图标的句柄。
此章节已结束,请看下一章节:Windows编程之创建窗口