窗口放置问题 - 什么是重新定位我的窗口?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了窗口放置问题 - 什么是重新定位我的窗口?相关的知识,希望对你有一定的参考价值。

我有一个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,它会显示maxed - 但它总是最大值!我在我的CMainFrame :: OnActivate中有我的SetWindowPlacement - 它应该在其他地方吗?

答案

所以在我的App启动时我做了这个:

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

它似乎工作

以上是关于窗口放置问题 - 什么是重新定位我的窗口?的主要内容,如果未能解决你的问题,请参考以下文章

CSS定位图片位置问题?? 图片到底如何定位,我的图片位置随着网页窗口的大小改变位置

c++:使用全局鼠标钩子重新定位窗口

相对于父级放置窗口

SDL2如何在第二台显示器上定位窗口?

窗口最小化时保留 HTML 页面的定位[关闭]

如何在 WPF 中的多显示器显示器上定位窗口?