如何在启动时集中MFC MDI应用程序?

时间:2010-03-03 13:18:00

标签: mfc visual-c++

我正在使用传统的MFC(VC 6)应用程序,需要将其修改为在启动时在屏幕上垂直和水平居中。我已尝试在主框架OnCreate调用中使用对CenterWindow的调用,但这似乎没有做任何事情。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

m_pMainWnd-> InitInstance()上的CenterWindow()?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我有一个MDI应用程序,它在Application类的InitInstance中启动时进行定位。 (我记得已经读过,主框架的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;
}

我希望这适合你。