在做一些异形窗口时,往往会响应以下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。

posted on 2013-04-17 14:41  归海一刀  阅读(222)  评论(0编辑  收藏  举报