mfc - 最大化的窗口还原到全屏

标签 mfc maximize cwnd maximize-window showwindow

使用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/

相关文章:

c++ - OpenCV - 如何在 Opencv 2.3 中定义 CvvImage 类型的变量?

c++ - 向 MFC CDockingPane 标题栏添加一个按钮

python - 线性规划 - 最大值优化

machine-learning - 假设优化收敛,逻辑回归是否总能找到全局最优值?

c++ - MFC:如何防止子 CWnd 对话框在调整父窗口大小时跳转?

c++ - MFC 对话框成员创建后如何修改?

c# - 禁用调整浏览器 Silverlight 4 窗口的大小

windows - 如何用自己的应用程序窗口CWnd替换窗口桌面

c++ - 使用CListCtrl显示utf-8字符