基本概念
包含兩個版本:一個是MFC的C++版本、另一個是Windows API版本
1、MFC:
類CRect的成員函式,其作用是判斷一個點是否在CRect中。
函式的原型如下:
2、Windows API:
函式的原型為:
套用舉例
在自繪視窗時,沒有標題欄,此只點擊客戶區的頂端部分,也認為是標題欄 ,從來可以實現視窗的拖動。
LRESULT CClientDlg::OnNcHitTest(CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rc;
GetClientRect(&rc); //客戶區。
CRect rcArea; //客戶區的頂部。
int iWidth = rc.Width()/2;
int iHeight=30;
rcArea.left = rc.Width()/2 -iWidth; //1-x
rcArea.top = rc.top; //1-y
rcArea.right = rc.Width()/2 +iWidth; //2-x
rcArea.bottom = rc.top + iHeight; //2-y
/* rcArea 示意圖
left,top------------
| |
| |
-------------right,bottom
left,top是原點。
*/
ClientToScreen(&rcArea);
UINT utemp = rcArea. PtInRect(point) ? HTCAPTION : CDialog::OnNcHitTest(point); //判斷此點是否在上述矩形區域內。
return rcArea.PtInRect(point) ? HTCAPTION : CDialog::OnNcHitTest(point);
}