2009-08-31 304 views
0

在Windows中,我有一個最小化窗口,它是前臺窗口(GetForegroundWindow)。我現在想要將窗口最小化,以便它再次變爲可見。我怎樣才能讓窗戶回到之前的狀態?也就是說,如果窗口在最小化之前被「恢復」,它應該被恢復,如果它在被最小化之前被最大化,則它應該被再次最大化,特別是不被恢復或者什麼。如何將窗口最小化到確切的先前狀態(恢復或最大化)?

看來我只能確定窗口的當前狀態{最小化,恢復,最大化},但理論上,最小化和最大化應該是可以一起設置的標誌。

資源管理器任務欄如何知道用戶點擊它時顯示窗口的狀態?

+0

你在這裏寫程序嗎?如果是的話,你使用哪種語言? – ChrisF 2009-08-31 09:32:29

+0

對不起,我正在編寫一個C#應用程序,但它已經包含對Win API的P/Invoke調用,所以我對託管和WinAPI解決方案很好。我也熟悉C,所以我也可以使用它。 – ygoe 2009-09-01 11:23:55

回答

1

如果你使用類似C,你可以看看上ShowWindow函數:

ShowWindow(hWnd, SW_RESTORE) 

SW_RESTORE
激活並顯示 窗口。如果窗口最小化或最大化,則系統將其恢復到其原始大小和位置的 。當還原最小化窗口時, 應用程序應指定此標誌 。

+0

「如果窗口最大化(...),系統會將其恢復到原始大小和位置。」恰恰那是我不想要的。如果窗口被最小化並且之前被最大化,則它應該被再次最大化,而不是被恢復。 – ygoe 2009-09-01 11:24:57

+0

這很奇怪 - 我嘗試過了,它效果很好。如果窗口最小化並且之前被最大化,則它將再次最大化。我只是不知道錯誤在哪裏 - 在實現中或者在文檔中:) – 2009-09-01 12:00:11

+0

是的。該錯誤在文檔中。它確實按預期工作(沒有記錄)。正常(微軟稱之爲「恢復」)窗口,然後最小化,再次恢復;最大化窗口,然後最小化,再次最大化。精細。 :-) – ygoe 2009-09-09 06:32:09

0

沒有獲得技術(我不知道你正在使用的語言),程序需要存儲當前正常大小,當前狀態和以前的狀態。

然後當從最小化恢復它可以檢查以前的狀態和大小。

在WPF的當前大小和狀態被存儲在主窗口的TopLeftHeightWidthWindowState性質。位置和大小的副本保存在RestoreBounds結構中,例如,在從最大化恢復窗口時,基本類使用此功能(所以您不必)。

+0

所以你的意思是我必須記住自己窗口的最小化之前WindowState的狀態?如果我知道這一點,我可以很容易地回到正確的以前的狀態。我希望操作系統爲我這麼做... – ygoe 2009-09-01 11:26:40

+0

@LonelyPixel - 不,應用程序會爲你記住它。我指着WPF所擁有的各種結構。 – ChrisF 2009-09-01 11:59:46

相關問題