2013-12-09 20 views
0

我是MFC初学者。当我创建一个简单的基于Form的MFC应用程序(使用VS2012)时发现了这个小错误,但我不知道如何解决它。MFC:如果程序先前在最大化状态下关闭,则为“最大化按钮”上的错误

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

以下是找到错误的步骤:

1)打开程序

2)最大化窗口

3)关闭程序

4)重新启动程序

发生了什么事,当我重新启动该程序,但窗口不处于最大化状态,在右上角窗口“最大化”按钮的功能不能正确显示。相反,呈现出最大化的图标,它现在显示了“往下还原”图标...

我如何修复这个bug?

此外,我该如何关闭此功能,该程序可以总是在特定的位置和大小,而不管其前收盘状态下启动的?

使用m_pMainWnd->的MoveWindow(X,Y,宽度,高度)之前m_pMainWnd->的ShowWindow(SW_SHOW)函数;?

+1

最有可能的是,你只是保持窗口大小而不是窗口状态。你可以发布更多的代码,以便我们确认这一点吗? –

+0

嗨,我想分享我的代码。但是我应该发布哪部分代码? 我注意到,如果使用'Visual Studio'项目样式创建项目,即使在默认代码中也会出现相同的错误(无需添加任何修改)。 – Kent

+1

我正在考虑保存和恢复窗口尺寸的代码。如果该代码是MFC本身的一部分,并且只调用MFC函数以使用它,请发布调用这些函数的代码。 –

回答

1

当我创建一个CFormView的OnInitialUpdate中包含行ResizeParentToFit默认样品();

删除它,并且应用程序已最大化为以前的状态。 ResizeParentToFit,正是名字所说的。它调整父窗口的大小,使父窗口完全符合您创建的窗体。

如果您不希望窗口布局完全恢复,请将变量CWinApEx :: m_bLoadWindowPlacement设置为FALSE。默认情况下,该标志被设置为TRUE!

相关问题