【问题标题】:MFC: Bug on 'Maximized Button' if the program was previously closed under the maximized stateMFC:如果程序先前在最大化状态下关闭,则“最大化按钮”上的错误
【发布时间】:2013-12-09 14:29:06
【问题描述】:

我是 MFC 初学者。当我创建一个简单的基于表单的 MFC 应用程序(使用 VS2012)时,我发现了这个小错误,但我不知道如何修复它。

默认程序似乎记住了程序之前的状态,即窗口位置、窗口大小(最大化或最小化)。所以当程序重新打开时,程序会恢复到上次关闭的状态。

以下是查找错误的步骤:

1) 打开程序

2) 最大化窗口

3) 关闭程序

4) 重新启动程序

发生的情况是,当我重新启动程序时,虽然窗口未处于最大化状态,但右上方窗口的“最大化”按钮无法正确显示。它不再显示最大化的图标,而是显示“还原”图标...

如何修复这个错误?

此外,我如何禁用此功能,以便程序始终可以在特定位置和大小启动,而不管其先前的关闭状态?

在m_pMainWnd->ShowWindow(SW_SHOW);之前使用m_pMainWnd->MoveWindow(x, y, Width, Height)函数?

【问题讨论】:

  • 很可能,您只是在保持窗口大小而不是窗口状态。您能否发布更多代码以便我们确认?
  • 嗨,我想分享我的代码。但是我应该发布代码的哪一部分?我注意到如果使用“Visual Studio”项目样式创建项目,即使在默认代码(不添加任何修改)上也会出现相同的错误。
  • 我在考虑保存和恢复窗口尺寸的代码。如果该代码是 MFC 本身的一部分,并且您只调用 MFC 函数来使用它,请发布调用这些函数的代码。
  • 我猜 OP 认为 Visual Studio 中存在错误,而不是在他的代码中 :)

标签: c++ mfc window


【解决方案1】:

当我使用 CFormView 创建默认示例时,OnInitialUpdate 包含 ResizeParentToFit();

删除它,应用程序将被最大化为之前的状态。 ResizeParentToFit,正如名字所说的那样。它调整父窗口的大小,使父窗口完全适合您创建的表单。

如果您根本不希望恢复窗口位置,请将变量 CWinApEx::m_bLoadWindowPlacement 设置为 FALSE。默认情况下,此标志设置为 TRUE!

【讨论】:

    猜你喜欢
    • 2016-10-04
    • 1970-01-01
    • 2016-03-04
    • 2014-04-10
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2010-10-28
    • 2016-05-17
    相关资源
    最近更新 更多