5. WNDCLASS结构

WNDCLASS结构

Windows的窗口总是基于窗口类来创建的,窗口类同时确定了处理窗口的窗口过程(回调函数)。
在创建引用程序窗口之前,必须调用RegisterClass函数来注册窗口类,该函数只需要一个参数,即指向WNDCLASS窗口类的指针。因为WNDCLASS类包含了窗口所拥有的基本属性。

结构原型:

typedef struct tagWNDCLASSW {
    UINT        style;
    WNDPROC     lpfnWndProc;
    int         cbClsExtra;
    int         cbWndExtra;
    HINSTANCE   hInstance;
    HICON       hIcon;
    HCURSOR     hCursor;
    HBRUSH      hbrBackground;
    LPCWSTR     lpszMenuName;
    LPCWSTR     lpszClassName;
} WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;

成员解析:

成员含义
style指定窗口类型,各种“类风格”可以使用按位或操作符组合起来
IpfnWndProc指定窗口过程(必须是回调函数)
cbClsExtra预留的额外空间,一般为0
cbWndExtra预留的额外空间,一般为0
hInstance应为程序的实例句柄
hIcon为所有基于该窗口类的窗口设定一个图标
hCursor为所有基于该窗口类的窗口设定一个鼠标指针
hbrBackground指定窗口背景色
IpszMenuName指定窗口菜单
IpszClassName指定窗口类名

style类风格解析

类风格含义
CS_VREDRAW移动或者调整窗口的高度(垂直方向)时,重绘整个窗口
CW_HREDRAW移动或者调整窗口的宽度(水平方向)时,重绘整个窗口
CS_DBLCLKS当用户光标在窗口内双击时,允许发送双击消息给窗口过程
CS_OWNDC给予每一个窗口实例分配一个唯一的DC(注意,尽管这样很方便,但它必须慎重使用,因为每一个DC大约要占800个字节的内存)
CS_CLASSDC该窗口类的所有窗口实例都共享一个窗口类DC
CS_PARENTDC1.将子窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。(注意:这是子窗口从系统缓存中获取DC,而不是使用父窗口的DC。)
2.指定该分格可以提高系统性能
CS_NOCLOSE禁止系统菜单的关闭选项
CS_SAVEBITS1.以位图形式保存被该窗口遮挡的屏幕部分,当该窗口移动以后,系统便可以用该保存的位图恢复屏幕移动的相应部分,从而系统不用向被该窗口遮挡的窗口发送WM_PAINT消息。
2.该特性对于菜单类型的窗口比较合适,因为它通常是简短的显示一下之后便消失。
3.设置该特性将增加显示该窗口的时间,因为它通常要先分配保存位图的内存。
CS_BYTEALIGNCLIENT在字节边界上(x方向上)定位窗口的用户区域的位置
CS_BYTEALIGNWINDOW在字符边界上(x方向上)定位窗口的位置
CS_GLOBALCLASS1.当调用CreateWindow或CreateWindowEx函数来创建窗口时允许它的hInstance参数和注册窗口类时传递给RegisterClass的hInstace参数不同.
2.如果不指定该风格,则这两个hInstace必须相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值