Как получить размеры из диалогового окна MFC DoModal? - PullRequest
0 голосов
/ 23 мая 2019

В моем родительском классе у меня есть функция, которая запускается кнопкой и выполняет DoModal для отображения диалогового окна:

void ParentClass::OnBtnPRess() 
{
    ChildClass dialg;
    dialg.DoModal();
}

В моем ChildClass я программно создаю произвольную ширинуи высоту диалогового окна и установки его в SetWindowPos, но я не хочу вычислять пользовательские позиции x и y.

Вместо этого я хотел бы получить rectизмерения из дочернего диалога, который создается после вызова DoModal и передачи его на SetWindowPos:

BOOL SetWindowPos(
  HWND hWndInsertAfter,
  int  X,
  int  Y,
  int  cx,
  int  cy,
  UINT uFlags
);

Я пытался сделать это GetWindowRect из BOOL ChildClass::OnInitDialog(), чтобы проверить,Я могу получить правильные rect позиции, но сравнивая их со значениями с помощью Spy ++ , они отключены.

Как я могу получить измерения из вызова DoModal ииспользуйте его в моем ChildClass?

Спасибо!

Например, если я просто полагаюсь только на DoModal, чтобы установить размер диалога, а не вызывать SetWindowPos ввсе, я получаю следующее от Spy ++ :

enter image description here

Каккогда-либо , если я пытаюсь получить размеры из DoModal, используя GetWindowRect, а затем используя значения, возвращенные в SetWindowPos, я получаю следующее:

enter image description here

Позиции x отключены.То, что я хочу, это x позиции от вызова DoModal.Как и предполагалось, я позвонил ScreenToClient и ClientToScreen после GetWindowRect, но позиции x также отключены.

ОБНОВЛЕНИЕ: По запросу, кодв OnInitDialog имеют следующие значения:

BOOL ChildClass::OnInitDialog()
{
    CDialog::OnInitDialog();

    RECT rect;
    GetWindowRect(&rect);

    int width;
    int height;

    // Code for calculating width and height

    SetWindowPos(&wndTop, rect.left, rect.top, width, height, SWP_SHOWWINDOW);

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