afx_msg UINT OnNcHitTest( CPoint point );
返回值:下面列出的滑鼠擊中測試枚舉值之一。
· 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 在最大化按鈕上。
參數: point 包含了游標的x軸和y軸坐標。這些坐標總是用螢幕坐標給出的。
說明:
每當滑鼠移動時,框架就為包含游標(或者是用SetCapture成員函式捕獲了滑鼠輸入的CWnd對象)的CWnd對象調用這個成員函式。
注意 框架調用這個成員函式以允許你的應用程式處理一個Windows訊息。傳遞給你的成員函式的參數反映了接收到訊息時框架接收到的參數。如果你調用了這個函式的基類實現,則該實現將使用最初傳遞給訊息的參數(而不是你提供給這個函式的參數)。
舉例:
比如果應用程式自己繪製的界面沒有標題欄,那我們怎么來拖動程式呢?那么就可以添加下面訊息:
UINT CMainWindow::OnNcHitTest (CPoint point)
{
UINT nHitTest = CFrameWnd::OnNcHitTest (point);
if (nHitTest == HTCLIENT) //如果是客戶區
nHitTest = HTCAPTION; //則把它當成標題欄
return nHitTest;
}
經過上面處理後,如果用戶拖動程式的客戶區的話,系統會以為你拖動的是欄題欄,從而實現程式拖動
請參閱:CWnd::GetCapture, WM_NCHITTEST