Как переместить элементы управления в середину формы MFC? - PullRequest
1 голос
/ 21 апреля 2009

Как переместить элементы управления в середину формы в проекте VFC ++ 6.0 MFC?

Скажем, я добавил EditBox (m_editcontrol), как переместить этот элемент управления в середину формы?

Ответы [ 3 ]

3 голосов
/ 21 апреля 2009
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 используется для перемещения окна в нужную позицию.

2 голосов
/ 14 октября 2015
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());
2 голосов
/ 21 апреля 2009

В редакторе ресурсов VC6 вы можете выбрать элемент управления и выполнить Ctrl + F9 для вертикального центрирования и Ctrl + Shift + F9 для горизонтального центрирования.

Программно вы можете использовать MoveWindow Win32 API для позиционирования элемента управления в любом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...