-
PtInRect
鎖定
包含兩個版本:一個是MFC的C++版本、另一個是Windows API版本
- 外文名
- PtInRect
- 性 質
- 科學
- 類 別
- 計算機編程
PtInRect基本概念
包含兩個版本:一個是MFC的C++版本、另一個是Windows API版本
MFC
類CRect的成員函數,其作用是判斷一個點是否在CRect中。
函數的原型如下:
BOOLPtInRect( POINTpoint )constthrow(); 參數説明: point: 一個包含了一個點的CPOINT或者POINT對象。 BOOL: 返回值為非零:如果點在CRect對象中,否則返回值為0
Windows API
函數的原型為:
BOOLPtInRect(CONSTRECT*lprc,//rectangle POINTpt//point ); 參數解釋: lprc: 一個指向RECT類型的常量指針,也就是説這個值是你要進行點是否在RECT對象的RECT類型的變量 pt: 一個類型為POINT類型的變量,也就是你要進行判斷點是否在RECT對象的點 舉例如下: 假設你要判斷點POINTa(1,10)是否在RECT對象RECTrect中進行如下的判斷: PtInRect(&rect,a); //如果點a在rect對象中,那麼返回值為非零,否則返回值為0。 如果出現錯誤:調用函數GetLastError()函數來獲取錯誤信息。
PtInRect應用舉例
在自繪窗口時,沒有標題欄,此只點擊客户區的頂端部分,也認為是標題欄 ,從來可以實現窗口的拖動。
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);
}
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:13次歷史版本
- 最近更新: 概渍邓亲揭怪