窗口自繪

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章