窗口自绘

在做一些异形窗口时,往往会响应以下NC消息:

WM_NCPAINT, WM_NCACTIVATE, WM_NCLBUTTONDOWN, WM_NCMOUSEMOVE。

但是,对于NC区的处理方式会受到系统版本及桌面主题的影响。最明显的一个例子是,

在XP和WIN7下,窗口标题栏的高度是不同的。正因为如此,采用响应NC消息进行窗口自绘是

极其麻烦。

另一种可行的方法是,将窗口的类型设置成无边框的,那么整个窗口区域都是客户区,客户区的

绘图操作完全由程序员自己控制,不会受到系统、桌面主题的影响。采用这个方法的缺点在于,

失去了标题栏的拖动功能。其实,只要响应WM_NCHITTEST,然后在适当的区域返回HTCAPTION,

就可以让窗口的某个区域具有标题栏的拖动作用。需要注意的是,如果某个区域的HITTEST返回

HTCAPTION,那么这个区域将不会收到WM_LBUTTONDOWN,WM_MOUSEMOVE。取而代之的是,

WM_NCLBUTTONDOWN, WM_NCLBUTTONUP。

 

 

PS:到目前为止我还是不会响应WM_NCLBUTTONUP。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值