Организация каскадных CDialogs в MFC с помощью функции CascadeWindows - PullRequest
1 голос
/ 20 июля 2010

Как я могу расположить диалоги программно в MFC в каскадном формате, кроме простого использования SetWindowPos на основе позиции ранее отображенного окна?

Позиция диалога должна быть загружена из реестра в моемприложение, поэтому мы используем:

SetWindowPos(NULL,x,y,cx,cy,SWP_NOZORDER); 

... для диалога.После этого, если мы используем функцию CascadeWindows, она, похоже, не работает для этого диалога, хотя она работает для других диалогов в том же родительском окне.Кажется, функция CascadeWindows не влияет на окна, вызвавшие SetWindowPos;Кто-нибудь может подтвердить, пожалуйста?

Если это так, мы должны использовать только SetWindowPos для организации каскада диалога, или есть другой способ?

1 Ответ

1 голос
/ 17 ноября 2011

Проверьте, имеет ли ваш диалог стиль окна: WS_EX_TOOLWINDOW или WS_EX_TOPMOST. CascadeWindows не будет размещать окна с этими стилями.

Я попробовал приложение на основе диалогового окна MFC со следующим кодом:

void CTestCascadeDlg::OnBnClickedOk()
{
    this->SetWindowPos( NULL, 100,100,500,500, SWP_NOZORDER );
    CascadeWindows( NULL, MDITILE_ZORDER, NULL, NULL, NULL );
}

И я мог заметить, что мой диалог был успешно выведен из каскада.

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