Максимальное окно восстанавливается до полного экрана - PullRequest
3 голосов
/ 02 сентября 2010

Использование CWnd::ShowWindow(SW_SHOWMAXIMIZED) максимально увеличивает окно моего приложения.

Однако при нажатии кнопки восстановления в приложении (или двойном щелчке по строке заголовка) восстановленный размер совпадает с максимизированным.окно, которое вводит в заблуждение пользователя.

При использовании этого альтернативного кода возникает та же проблема:

WINDOWPLACEMENT wndpl;
GetWindowPlacement(&wndpl);
wndpl.showCmd = SW_SHOWMAXIMIZED;
SetWindowPlacement(&wndpl);

Как можно сохранить размер по умолчанию не максимальным при восстановлении.

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Я решил свою проблему, и решение может решить и вашу. Моя проблема заключалась в том, что, хотя я вызывал SetWindowPlacement (& wndpl) в CMainFrame :: OnCreate, окно не было должным образом восстановлено, если оно было развернуто. Я добавил две строки кода перед SetWindowPlacement, и теперь он работает как положено.

CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    ...
    // Obtain wndpl, maybe from registry
    AfxGetApp()->m_nCmdShow = wndpl.showCmd;
    wndpl.showCmd = SW_SHOW;
    SetWindowPlacement(&wndpl);
}

Эти две строки помогают базовому коду не портить вещи при вызове ActivateFrame, который вызывает ShowWindow с параметром, полученным из CWinApp :: m_nCmdShow.

0 голосов
/ 02 сентября 2010

Вся информация находится в файле с расширением .RC.Я никогда не использовал процедуры максимизации / восстановления, хотя вы должны искать «DIALOGEX» для того же окна.Вы можете изменить его, используя любой редактор (блокнот, ультраредакт и т. Д.)

...