关于WM_NCHITTEST消息
通常,我們拖動對話框窗口的標題欄來移動窗口,但有時候,我們想通過鼠標在客戶區上拖動來移動窗口。
在OnLButtonDown中添加代碼如下代碼也可以完成窗體拖動:
::PostMessage(m_hWnd, WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0);
Windows用這個消息來做什么? “HITTEST”就是“命中測試”的意思,WM_NCHITTEST消息用來獲取鼠標當前命中的位置。
WM_NCHITTEST的消息響應函數會根據鼠標當前的坐標來判斷鼠標命中了窗口的哪個部位,消息響應函數的返回值指出了部位,例如它可能會返回HTCAPTION,或者HTCLIENT等。返回值:下面列出的鼠標擊中測試枚舉值之一。
· HTBORDER 在不具有可變大小邊框的窗口的邊框上。
· HTBOTTOM 在窗口的水平邊框的底部。
· HTBOTTOMLEFT 在窗口邊框的左下角。
· HTBOTTOMRIGHT 在窗口邊框的右下角。
· HTCAPTION 在標題條中。
· HTCLIENT 在客戶區中。
· HTERROR 在屏幕背景或窗口之間的分隔線上(與HTNOWHERE相同,除了Windows的DefWndProc函數產生一個系統響聲以指明錯誤)。
· HTGROWBOX 在尺寸框中。
· HTHSCROLL 在水平滾條上。
· HTLEFT 在窗口的左邊框上。
· HTMAXBUTTON 在最大化按鈕上。
· HTMENU 在菜單區域。
· HTMINBUTTON 在最小化按鈕上。
· HTNOWHERE 在屏幕背景或窗口之間的分隔線上。
· HTREDUCE 在最小化按鈕上。
· HTRIGHT 在窗口的右邊框上。
· HTSIZE 在尺寸框中。(與HTGROWBOX相同)
· HTSYSMENU 在控制菜單或子窗口的關閉按鈕上。
· HTTOP 在窗口水平邊框的上方。
· HTTOPLEFT 在窗口邊框的左上角。
· HTTOPRIGHT 在窗口邊框的右上角。
· HTTRANSPARENT 在一個被其它窗口覆蓋的窗口中。
· HTVSCROLL 在垂直滾動條中。
· HTZOOM 在最大化按鈕上。
總結
以上是生活随笔為你收集整理的关于WM_NCHITTEST消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GlobalAlloc全局内存的使用
- 下一篇: CBitmapButton位图按钮简明教