最大化的窗口恢复到全屏

时间:2010-09-02 06:31:58

标签: mfc maximize cwnd maximize-window showwindow

使用CWnd::ShowWindow(SW_SHOWMAXIMIZED)按预期最大化我的应用窗口。

但是,当单击应用程序上的恢复按钮(或双击标题栏)时,恢复的大小与最大化窗口的大小相同,这会让用户感到困惑。

使用此替代代码具有相同的问题:

WINDOWPLACEMENT wndpl;
GetWindowPlacement(&wndpl);
wndpl.showCmd = SW_SHOWMAXIMIZED;
SetWindowPlacement(&wndpl);

恢复时如何保持默认的非最大化大小。

2 个答案:

答案 0 :(得分:2)

我已经解决了我的问题,解决方案也可以解决你的问题。我的问题是,即使我在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。

答案 1 :(得分:-1)

所有信息都在扩展名为.RC的文件中。我从未使用过最大化/恢复程序,但您应该在同一窗口中查找“DIALOGEX”。您可以使用任何编辑器(记事本,超级编辑等)更改它