永发信息网

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

答案:1  悬赏:10  手机版
解决时间 2021-02-05 06:17
MFC如何获取控件在对话框上的位置坐标
最佳答案
本来希望的效果是在对话框上设置两个picture控件,分别显示两幅图像,然后将两幅图像中的相似部分利用一条直线连接起来。要实现这样的效果需要知道相似位置在这两幅图中的坐标以及这两个控件在对话框上的坐标,然后通过加减运算就可以得到图像上的相似区域在对话框的坐标,直接将这两个坐标用直线连接就可以了。
为此,如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个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;
GetDlgItem(IDC_LEFT)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置
ScreenToClient(rectL);//转化为对话框上的相对位置
GetDlgItem(IDC_RIGHT)->GetWindowRect(&rectR);//获取控件相对于屏幕的位置
ScreenToClient(rectR);//转化为对话框上的相对位置
m_row=rectL.bottom-rectL.top;
m_colume=rectL.right-rectL.left;
UpdateData(FALSE);
CClientDC dc(this);
dc.MoveTo(rectL.left,rectL.top);
dc.LineTo(rectR.right,rectR.bottom);
dc.MoveTo(rectL.right,rectL.top);
dc.LineTo(rectR.left,rectR.bottom);
dc.MoveTo(rectL.left+m_colume/2,rectL.top+m_row/2);//连接两个控件中心点
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
别克英朗离合器有臭味怎么了
唐奉乡赵禅院中学地址好找么,我有些事要过去
牙齿稀疏有什么危害
赶走住在我家的亲戚合法吗?
胚芽鞘产生生长素的部位,感受单侧光刺激的部
单选题在下列现象中,与电化学腐蚀无关的是A.
程油子中学地址在什么地方,我要处理点事
蓝情地址有知道的么?有点事想过去
什么叫机械臂连杆之间的耦合作用
请问车辆尾部标识板的国家标准是什么时候执行
旋转气缸最大可旋转多少度?
Xp系统的电脑、用了路由器后怎样使电脑宽带连
用哪个网站看小说免费,而且没有乱七八糟的广
瑞士机器手表带了几年放一段时间对手表有影响
河北省冀州市南午村镇吴吕中学怎么去啊,我要
推荐资讯
账页的基本内容应当包括:账户的名称、登记账
麻雀岭地址在哪,我要去那里办事
就着猪肉吃油条腻透了
中国人寿保险股份有限公司耿车支公司这个地址
最好的离异征婚交友网推荐
小松挖掘机显示屏标志怎么认
民心广场在哪里啊,我有事要去这个地方
洞穴鱼类中有些鱼一生都不离开黑暗无光的溶洞
味多美提货卡怎么用
五金索具在吊装时应该注意什么
愿这一年,不再蹉跎,不作妄谈.怎么解释
第二小学(临汾隰县)地址有知道的么?有点事想
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?