在做一些異形窗口時,往往會響應以下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。