2013-12-17 86 views
2

大小我遇到了這個問題。我有一個簡單的Win32程序這就好比樣板,我可以從Visual Studio下選擇「Win 32項目」 2010我們得到「模板 - > VISUAL C++」。如何在Win32程序設置,使被記住

我發現所有其他基於Windows的程序,如Adobe Reader,Windows資源管理器具有以下功能:將主窗口放大到新尺寸,然後從文件菜單或系統菜單中選擇「關閉」或「退出」關閉它,那麼你再次啓動程序,主窗口的大小將與上次調整的大小相同。然而,我從Visual Studio獲得的程序作爲引導程序沒有這樣的功能。

我研究更多,但無法找到在任何WNDCLASS或CreateWindow的,我可以調整要做到這一點,其設置。有誰知道這一點,感謝您的幫助提前。

回答

6

要做到這一點,最簡單的方法是用GetWindowPlacement()SetWindowPlacement()功能。這些爲您管理窗口大小和狀態(最小化/最大化/恢復)。

呼叫,當你想記錄你的窗口的當前狀態GetWindowPlacement()

WINDOWPLACEMENT wp = {0}; 
wp.length = sizeof(wp); 
if (GetWindowPlacement(hWnd, &wp)) 
{ 
    // save wp values somewhere... 
} 

然後,您可以保存WINDOWPLACEMENT結構的值在程序的配置文件中的某個地方 - 無論是在註冊表或磁盤上。

要恢復窗口的信息,保存的值加載到WINDOWPLACEMENT結構,然後調用SetWindowPlacement()功能:

if (values were previously saved) 
{ 
    WINDOWPLACEMENT wp = {0}; 
    wp.length = sizeof(wp); 
    // load wp values from somewhere... 
    SetWindowPlacement(hWnd, &wp); 
} 
+0

SetWindowPlacement()是正確的決定,因爲像SetWindowsPos替代()不檢查窗口在活動監視器上,因此它會阻止您將窗口恢復爲未拔下/移動的監視器。 – ColdCat

2

您需要保存窗口自己的位置(X,Y)和大小(高度,寬度),並在程序再次啓動設置這些值。

根據程序的性質,可以設置這一個配置文件,註冊表項或數據庫(其他選項)。