
应该是你坐标转换的问题。你把画图的坐标值 用日志记录下(或者直接messagebox打印也行)。
如果你流程上没有问题的话,应该就是 ClientToScreen()
ClientToScreen()的问题。
日志记录下画图的坐标值是查找问题最直接的方法。
有现成的ScreenToClient函数,你可以百度搜一下。
例:
void CTest25Dlg::OnButton1()
{
CRect r(0,0,100,100);
CPoint pt(0,0);
ScreenToClient(&r);
ScreenToClient(&pt);
}
执行下面的两行后,r,pt的值变成了相对对话框左上角的值
要实现这样的效果需要知道相似位置在这两幅图中的坐标以及这两个控件在对话框上的坐标,然后通过加减运算就可以得到图像上的相似区域在对话框的坐标,直接将这两个坐标用直线连接就可以了。
为此,如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个picture控件中的点用直线连接起来,比较直观的是picture控件的四个角,所以程序中是将控件的拐角连接起来。首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加
成员函数
OnMatch()
。
void
CControlDlg::OnMatch(){//
TODO:
Add
your
control
notification
handler
code
here
CRect
rectL,rectR;
首先在视图类(或框架类)中添加一个CPoint m_pt的成员变量,然后在视图类中添加鼠标左击消息处理WM_LBUTTONDOWN即为:
void CMy48View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_pt=point;
CView::OnLButtonDown(nFlags, point);
}这样就将鼠标左键的点保存在m_pt中了
CRect r(0,0,100,100); //控件区域
CPoint pt(0,0);
ScreenToClient(&r);
ScreenToClient(&pt);
以上就是关于MFC鼠标左键如何获得坐标全部的内容,包括:MFC鼠标左键如何获得坐标、MFC中,我能过GetCursorPos()来获取鼠标当前的屏幕坐标,但是我想获取当前窗口的坐标。、MFC如何获取控件在对话框上的位置坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)