MFC 关于鼠标响应的坐标问题
关于鼠标响应的坐标问题。
一直就搞不懂咋个点击左键时,坐标不准。
原来是:一个相对于屏幕,一个相对于客户区。那就都转换为相对于屏幕的就好了撒~~~
void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString str;
CRect dRect;
GetDlgItem(IDC_DBD)->GetWindowRect(&dRect); //得到控件的尺寸大小,这里GetWindowRect函数得到的尺寸是相对于屏幕左上角的坐标给出的
ClientToScreen(&point); //坐标转换:客户区->屏幕
//然后再对point进行自己想要的操作,比如:
if((point.x>=dRect.left+m_tlx && point.x<=dRect.right-m_tlx) && (point.y>=dRect.top+m_tly && point.y<=dRect.bottom-m_tly))
{
// 通过对point的处理,获得实际在picture控件中的点击位置(坐标)
point.x-=(dRect.left+m_tlx);
point.y-=(dRect.top+m_tly);
str.Format(_T("%d"),point.x); //整型转化为字符串
SetDlgItemText(IDC_EDIT_DBDX,str); //显示在编辑框中
str.Format(_T("%d"),point.y); //整型转化为字符串
SetDlgItemText(IDC_EDIT_DBDY,str); //显示在编辑框中
}
}
利用坐标转换函数
客户区->屏幕 ClientToScreen(LPPOINT)
屏幕->客户区 ScreenToClient(CRECT)
LPPOINT就是CPoint point;变量point的地址,即&point