2013-12-09 31 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!

相關問題