如何将控件移动到MFC表单的中间?

时间:2009-04-21 05:04:45

标签: visual-c++ mfc

如何在VC ++ 6.0 MFC项目中将控件移动到窗体的中间?

假设我添加了一个EditBox(m_editcontrol),如何将此控件移动到表单的中间?

3 个答案:

答案 0 :(得分:3)

CRect rectParent;
m_editcontrol.GetParent()->GetClientRect(rectParent);
CRect rectControl;
m_editcontrol.GetWindowRect(rectControl);
m_editcontrol.MoveWindow((rectParent.Width()-rectControl.Width())/2, (rectParent.Height()-rectControl.Height())/2, rectControl.Width(), rectControl.Height());

控件的位置在父窗口的客户区域内,因此首先需要获取父窗口的宽度和高度。然后,我们得到控件的宽度和高度。父窗口的中间是宽度和高度的差值,除以2. MoveWindow用于将窗口移动到所需位置。

答案 1 :(得分:2)

在VC6资源编辑器中,您可以选择控件并按Ctrl + F9进行垂直居中,按Ctrl + Shift + F9进行水平居中。

以编程方式,您可以使用MoveWindow Win32 API将控件放在任何位置。

答案 2 :(得分:2)

CRect rectParent;
m_pParentWnd->GetClientRect(rectParent);
m_pParentWnd->ClientToScreen(rectParent);
CRect rectControl;
GetWindowRect(rectControl);
MoveWindow(rectParent.left + (rectParent.Width()-rectControl.Width())/2, rectParent.top + (rectParent.Height()-rectControl.Height())/2,
    rectControl.Width(), rectControl.Height());