MFC如何获取控件在对话框上的位置坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC如何获取控件在对话框上的位置坐标相关的知识,希望对你有一定的参考价值。

要实现这样的效果需要知道相似位置在这两幅图中的坐标以及这两个控件在对话框上的坐标,然后通过加减运算就可以得到图像上的相似区域在对话框的坐标,直接将这两个坐标用直线连接就可以了。
为此,如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个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;
参考技术A 使用getcursorpos()函数
假设是用pciture控件显示图片。
那么可以先改变控件的id,然后定义一个cstatic
类型的变量如m_ctrlpic。
先得到当前鼠标坐标:
cpoint
point;
getcursorpos(
&point
);
然后得到picture控件rect。
crect
rect;
::getclientrect(m_ctrlpic.getsafehwnd(),
&rect);
然后把当前鼠标坐标转为相对于rect的坐标。
::screentoclient(m_ctrlpic.getsafehwnd(),
&point);
然后判断该点坐标是否在rect内,在就显示
if(rect.ptinrect(point))

cstring
strpos;
strpos.format("%d:%d",
point.x,
point.y);
afxmessagebox(strpos);

winform中如何获取控件在窗体上位置?

参考技术A 控件名称.Location

横坐标:控件名称.Location.X
纵坐标:控件名称.Location.Y
参考技术B private void pan_Drowing_MouseClick(object sender, MouseEventArgs e)

int a,b;
a = e.X;
b = e.Y;
本回答被提问者采纳
参考技术C "this.button1.Top="+ this.button1.Top.ToString() + ";this.button1.Left=" + this.button1.Left.ToString();

以上是关于MFC如何获取控件在对话框上的位置坐标的主要内容,如果未能解决你的问题,请参考以下文章

MFC中,关于得到鼠标在对话框上的坐标值

MFC 我在几个图片控件显示了图片,如何获取这几个图片的资源编号?

Qt中获取控件所在界面的位置,该怎么解决

winform中如何获取控件在窗体上位置?

如何从 MFC 选项卡控件 (TabCtrl) 获取额外数据?

MFC怎么获取控件地址