mfc控件位置调整和坐标确定
2012-12-31 16:40
302 查看
http://my.oschina.net/u/131904/blog/39804
在mfc工程中控件或者窗口位置的调整是经常遇到的,特别是基于对话框的工程。位置的调整包括坐标、长度和宽度的变化,一般在窗口类的OnSize函数中实现。控件位置的调整涉及的函数有:GetWindowRect()、ScreenToClient()、GetClientRect()、MoveWindow()或SetWindowPos(),功能意义如下:
GetWindowRect():获得窗口在屏幕上的矩形坐标,调整控件位置时必须首先获得该屏幕坐标;
ScreenToClient():转换屏幕坐标到客户区坐标,如果为子窗口,转换后坐标为相对于父窗口的坐标,若为独立窗口,转换后客户区左上坐标为(0,0);调整子窗口时这一步也是必须的;
GetClientRect():获得窗口客户区坐标,左上坐标永远为(0,0);
MoveWindow():调整控件到指定位置;
SetWindowPos():调整控件的位置,该函数使用更灵活,多用于只修改控件位置而大小不变或只修改大小而位置不变的情况:
控件位置调整涉及的参变量有:主窗口的cx、cy坐标、参考点坐标。相对于调整位置时调用的函数,变量稍许复杂些。cx、cy坐标为主窗口的宽和高,有OnSize的参数给出,为窗口控件调整提供了变化的范围,所有的控件为了能够正常显示都不能超出这个范围。其实在开发过程中较难和重要的是参考控件的选择,其位置相对于主窗口来说必须好确定。常用的策略:
1. 选择主窗口上位置不随窗口大小变化的控件为参考;
2. 选择主窗口上控件的宽或者高固定的控件;
3. 选择与主窗口满足固定坐标关系的控件 ;
4. 选择主窗口上控件位置或者高宽容易确定的控件。
以上四种策略可在实际开发中作为参考!不管遇到什么的情况,一定要清楚:选择一个
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++MFC如何获取控件在对话框上的位置坐标
2010-09-13 20:20
本来希望的效果是在对话框上设置两个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);//连接两个控件中心点
dc.LineTo(rectR.left+m_colume/2,rectR.top+m_row/2);
}
相关文章推荐
- mfc控件位置调整和坐标确定
- mfc控件位置调整和坐标确定
- MFC控件位置调整和坐标确定
- mfc控件位置调整和坐标确定
- mfc控件位置调整和坐标确定
- mfc控件位置调整和坐标确定 .
- MFC TableControl控件子对话框 以及子控件 随主对话框 最大化后 调整大小及位置
- mfc控件位置调整
- MFC控件位置调整
- MFC 获取picture控件的鼠标点击坐标位置的方法
- MFC 获取picture控件的鼠标点击坐标位置的方法
- MFC中控件大小和位置随对话框大小调整
- MFC对话框应用程序 如何在对话框窗口显示前获取窗口(控件)的屏幕坐标位置
- MFC 获取picture控件的鼠标点击坐标位置的方法
- MFC动态调整对话框控件位置和大小
- MFC_MoveWindow窗口、控件的大小、位置调整
- MFC 获取picture控件的鼠标点击坐标位置的方法(PreTranslateMessag)
- [置顶] MFC窗口最大化时控件位置的调整
- MFC 确定控件位置
- mfc控件位置坐标获取