使用CWnd::ShowWindow(SW_SHOWMAXIMIZED)
可以最大化我的应用程序窗口。
但是,单击应用程序上的还原按钮(或双击标题栏)时,还原后的大小与最大化窗口的大小相同,这会使用户感到困惑。
使用此替代代码具有相同的问题:
WINDOWPLACEMENT wndpl;
GetWindowPlacement(&wndpl);
wndpl.showCmd = SW_SHOWMAXIMIZED;
SetWindowPlacement(&wndpl);
恢复时如何保持默认的未最大化大小。
最佳答案
我已经解决了我的问题,该解决方案也可能会解决您的问题。我的问题是,即使我在CMainFrame::OnCreate中调用SetWindowPlacement(&wndpl),如果窗口最大化也无法正确还原。我在SetWindowPlacement之前添加了两行代码,现在它可以按预期工作。
CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
// Obtain wndpl, maybe from registry
AfxGetApp()->m_nCmdShow = wndpl.showCmd;
wndpl.showCmd = SW_SHOW;
SetWindowPlacement(&wndpl);
}
这两行帮助底层代码在调用ActivateFrame时不会使事情混乱,后者通过从CWinApp::m_nCmdShow获得的参数调用ShowWindow。
关于mfc - 最大化的窗口还原到全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3624307/