Как я могу центрировать приложение MFC MDI при запуске? - PullRequest
0 голосов
/ 03 марта 2010

Я работаю с устаревшим приложением MFC (VC 6), которое необходимо изменить, чтобы при запуске центрировать его по вертикали и горизонтали на экране. Я попытался использовать вызов CenterWindow в вызове OnCreate основного фрейма, но это, похоже, ничего не делает. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 03 марта 2010

m_pMainWnd-> CenterWindow () в InitInstance ()?

0 голосов
/ 03 марта 2010

У меня есть приложение MDI, которое выполняет позиционирование при запуске в InitInstance класса Application. (Я помню, что читал, что OnCreate основного фрейма - действительно неправильное место, но я больше не знаю, где я читал это ... давным-давно) Я пытаюсь выделить соответствующие части здесь:

BOOL CMyApp::InitInstance()
{
    // stuff...

    CMyMainFrame* pMyMainFrame=CreateMainFrame();
    if (!pMyMainFrame)
        return FALSE;
    m_pMainWnd = pMyMainFrame;

    // stuff...

    if (!ProcessShellCommand(cmdInfo))
        return FALSE;

    int nCmdShow=SW_NORMAL;
    UINT flags=WPF_SETMINPOSITION;
    WINDOWPLACEMENT aWndPlacement;
    CRect rect;

    // determine the desired rect of the application window

    aWndPlacement.length=sizeof(WINDOWPLACEMENT);
    aWndPlacement.showCmd=nCmdShow;
    aWndPlacement.flags=flags;
    aWndPlacement.ptMinPosition=CPoint(0,0);
    aWndPlacement.ptMaxPosition=CPoint(-::GetSystemMetrics(SM_CXBORDER),
                                       -::GetSystemMetrics(SM_CYBORDER));
    aWndPlacement.rcNormalPosition=rect;
    m_pMainWnd->SetWindowPlacement(&aWndPlacement);
    m_nCmdShow=nCmdShow;

    pMyMainFrame->ShowWindow(m_nCmdShow);
    pMyMainFrame->UpdateWindow();

    return TRUE;
}

Я надеюсь, что это работает для вас.

0 голосов
/ 03 марта 2010

left = (ScreenWidth-WindowWidth) / 2 top = (ScreenHeight-WIndowHeight) / 2

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