Как перемещать элементы управления в середину формы в проекте MFC VC++ 6.0?Как перемещать элементы управления в середину формы MFC?
Скажем, я добавил EditBox (m_editcontrol), как перенести этот элемент управления в середину формы?
Как перемещать элементы управления в середину формы в проекте MFC VC++ 6.0?Как перемещать элементы управления в середину формы MFC?
Скажем, я добавил EditBox (m_editcontrol), как перенести этот элемент управления в середину формы?
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 используется для перемещения окна в нужное положение.
В редакторе ресурсов VC6 вы можете выбрать элемент управления и сделать Ctrl + F9 для вертикального центрирования и Ctrl + Shift + F9 для горизонтального центрирования.
Программно вы можете использовать MoveWindow Win32 API для позиционирования элемента управления, где хотите.
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());