3

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

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

使用这个替代代码有同样的问题:

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

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

4

2 回答 2

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。

于 2011-03-18T16:26:46.180 回答
-1

所有信息都在扩展名为 .RC 的文件中。我从来没有使用过最大化/恢复过程,尽管你应该为同一个窗口寻找一个“对话框”。您可以使用任何编辑器(记事本、ultraedit 等)对其进行更改

于 2010-09-02T10:53:33.627 回答