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);//连接两个控件中心点
温馨提示:内容为网友见解,仅供参考
无其他回答

MFC如何获取控件在对话框上的位置坐标
先得到控件的窗口坐标再转换成相对于对话框的坐标即可。代码如下:CRect r;GetDlgItem(IDC_BUTTON1)->GetWindowRect(&r);ScreenToClient(r);望采纳

MFC如何获取控件在对话框上的位置坐标
首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加成员函数OnMatch() 。void CControlDlg::OnMatch(){...

MFC中,关于得到鼠标在对话框上的坐标值
先得到当前鼠标坐标:CPoint point;GetCursorPos( &point );然后得到picture控件rect。CRect rect;::GetClientRect(m_ctrlPic.GetSafeHwnd(), &rect);然后把当前鼠标坐标转为相对于rect的坐标。::ScreenToClient(m_ctrlPic.GetSafeHwnd(), &point);然后判断该点坐标是否在rect内,在就显示 if(rect.PtIn...

MFC怎么获取控件地址
1.设置位置可以使用setWindowPos 但是并没有函数GetWindowPos获取位置 2.可以通过一下方法获得 相关函数 GetClientRect(); \/\/获得client区域 GetWindowRect(); \/\/获取window区域 ScreenToClient(); \/\/相互转换 ClientToScreen();3.由于GetClientRect()获得的区域不包括位置,得到的rect的left,top必然为0 而...

MFC中如何得到对话框客户区中鼠标点下位置的坐标,具体代码。我的对话...
SetWindowText(str); \/\/更新程序窗口Edit控件文本 CDialog::OnMouseMove(nFlags, point);} \/\/单击鼠标时,显示鼠标在客户区内的坐标 void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point){ \/\/ TODO: Add your message handler code here and\/or call default CString str;str.Format("x...

MFC获取QQ对话框窗口抖动按钮图标的位置?
HWND hWnd = ::FindWindow(NULL, _T("***"));\/\/***表示QQ昵称或者是备注名称if (hWnd){\/\/如果找到窗口,模拟点击抖动按钮SendMessage(hWnd, WM_LBUTTONDOWN, 0x00000001, 0x017E006A);SendMessage(hWnd, WM_LBUTTONUP, 0x00000001, 0x017E006A);} ...

MFC 中如何获得对话框中控件的ID值
在设计窗口,右击对话框设计窗口中要知道ID的控件,在弹出的菜单中选Properties,在弹出的属性框中的General选项中的ID:项右边的文本框中的内容就是了。

mfc 在对话框中显示直角坐标系
1. 添加static静态文本框到对话框上, 并修改其ID为IDC_MYSTATIC 2. 在对话框的申明文件即CXXXDlg.h文件中定义变量:CWnd *pWnd; \/\/获取控件窗口类指针 CDC *pDC; \/\/获取控件的CDC指针 3. 在其cpp实现文件中的OnInitDialog()函数中获取:pWnd = GetDlgItem(IDC_STATIC);pDC = pWnd->Get...

如何用 VC(MFC)实现基于对话框的位图读取显示
1、将图像文件以资源形式加入工程中,IDB_BITMAP1 2、用一个PICTURE控件,在其属性中,将其Type设置为Bitmap 3、将Piture控件的属性中的Image设置为IDB_BITMAP1 运行

MFC:访问对话框的七种方法
在MFC中,要访问对话框中的控件,有多种方法可供选择。首先,从创建一个MFC对话框程序开始,包含控件如文本框(Text)和按钮(Button),构建一个基础的加法器界面。1. GetDlgItem 方法 利用函数如 GetDlgItem(id) 获取控件,GetWindowText() 获取其文字内容,通过 _ttoi() 和 _itot() 转换为整数操作...

相似回答