Проблема размещения окна - что меняет положение моего окна? - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть приложение на C ++ / MFC, и я пытаюсь сохранить и восстановить расположение окна моего основного кадра, полученного из CFrameWnd.У меня есть GetWindowPlacement и SetWindowPlacement в соответствующих местах, и все, кажется, работает хорошо.

До тех пор, пока я не 'сохраню' окно, когда ономаксимизируется.В этом случае, когда я снова открываю приложение и использую отладчик, чтобы перешагнуть через мой SetWindowPlacement вызов, я вижу, что он размещен максимально, как я хотел.

Но тогда, если япродолжить выполнение, что-то еще «восстанавливает» мое окно до не максимизированного размера.Как мне узнать, что делает это?(Так как я нигде не вызываю ShowWindow)

РЕДАКТИРОВАТЬ: Кажется, это происходит от CFrameWnd :: InitialUpdateFrame :

    int nCmdShow = -1;      // default
    CWinApp* pApp = AfxGetApp();
    if (pApp != NULL && pApp->m_pMainWnd == this)
    {
        nCmdShow = pApp->m_nCmdShow; // use the parameter from WinMain
        pApp->m_nCmdShow = -1; // set to default after first time
    }
    ActivateFrame(nCmdShow);

Если при запуске я установил для своего приложения m_nCmdShow значение SW_MAXIMIZED, оно будет показывать максимальное значение, но оно всегда будет максимальным!У меня SetWindowPlacement в моем CMainFrame :: OnActivate - это должно быть где-то еще?

1 Ответ

0 голосов
/ 14 сентября 2018

Итак, при запуске моего приложения я сделал это:

WINDOWPLACEMENT* lwp;
UINT nl;
if (AfxGetApp()->GetProfileBinary(_T("MainFrame"), _T("WP"), (LPBYTE*)&lwp, &nl))
{
    m_nCmdShow = lwp->showCmd;
}
delete [] lwp;

Кажется, что работает

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