如何在VC ++ 6.0 MFC项目中将控件移动到窗体的中间?
假设我添加了一个EditBox(m_editcontrol),如何将此控件移动到表单的中间?
答案 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());