窗口最小化后不見了怎么辦,這個窗口去哪里了呢

在Windows 95操作系統引入資源管理器之前,Windows的桌面是一個非常與眾不同的存在 。
當時的桌面上的圖標并不代表文件,而是當你最小化一個程序時 , 它會最小化成為桌面上的一個圖標 。如果你希望打開一個已經最小化的程序時,你必須在桌面上尋找它對應的圖標 , 有可能你還需要最小化其他程序,從而讓這個圖標可見,然后雙擊對應的圖標,從而恢復窗口的顯示 。(當然 , 你可以使用ALT + TAB這個組合鍵進行程序窗口切換 。
資源管理器的出現,修改了桌面模型,從而將桌面上的圖標表示為一個文件或者文件夾,而不是之前的程序圖標 。而程序的顯示管理則交給了新設計的任務欄 。
但是,不知道你是否想過,當一個程序的窗口最小化后,這個窗口去哪里了呢?
在舊的桌面模型下 , 當一個窗口被最小化時,它會被顯示成一個圖標,這個圖標有一個特定的屏幕坐標,而程序通過繪制這個圖標來響應窗口繪制消息 。(當然,大多數應用程序會調用默認的DefWindowProc來繪制窗口圖標) 換句話說,窗口一直都在那里 , 只是它的顯示形態改變了而已 。
但是引入了任務欄組件之后,當一個程序的窗口被最小化時,它確實是消失了 。它只會顯示在任務欄上 。對于如何處理最小化后的窗口,我們設計了若干實現 , 因為看起來不管我們怎么設計,都有一些用戶不太能接受 。
第一種做法很簡單:當一個窗口被最小化之后,Windows 95的窗口管理器會將這個窗口設置為隱藏狀態 。這種做法在運行了很多應用程序的場景下,運作的并不是很好 。因為有些應用程序需要嚴格區分窗口的最小化狀態(依然可見)和隱藏狀態(不再可見) 。
第二種做法是,Windows 95的窗口管理器使用了舊版本的設計模型,將窗口最小化,但是會把最小化的窗口的坐標設置到(-32000, -32000),這也沒能按我們預期的那樣工作,因為有些應用程序在發現窗口坐標為負值的時候,會極大出乎他們的意料 。
所以,Windows95的窗口管理器會嘗試在坐標(32000, 32000)位置對窗口進行最小化,這也沒能正常工作 , 因為有些程序會對窗口坐標為正值但是數值非常大的場景感到意外 。
最終,設計方案將坐標改為了(3000, 3000),這個設定看起來滿足了所有人的預期 。坐標不是負值,也不是很大,但是卻能足夠大而不至于顯示在屏幕上(至少不會在1995年那個時候的屏幕分辨率下) 。
如果你運行一臺擁有三臺顯示器的Windows 98機器 , 則你可以這樣試試:
將每個屏幕的分辨率設置為1024*768 , 然后將它們并排擺放好 。在第三臺顯示器的右下角,你會看到所有已經處于最小化狀態的窗口 。
【窗口最小化后不見了怎么辦,這個窗口去哪里了呢】從Windows NT開始 , 設計方案還是將窗口最小化坐標修改為了-32000,并且因為某種原因不在考慮兼容性修復 。我猜想,開發團隊覺得當Window NT開始變得流行的時候,所有未兼容的程序都會修復這個問題 。換句話說,還是讓Windows 95來做這份臟活吧 。
總結
敢問老大哥一句:任務欄是否借鑒了Macintosh的Dock?
最后
Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,里面有很多關于Windows的小知識 , 對于廣大Windows平臺開發者來說,確實十分有幫助 。
本文來自:《Where did windows minimize to before the taskbar was invented?》
最近我寫了個東西
正如你們所知道的,拓撲梅爾智慧辦公平臺(Topomel Box)是一款綠色軟件,主要面向經常使用電腦的朋友 。它提供了各種提升辦公效率的小功能,同時操作上盡可能地簡單方便 。
我想:你值得擁有 。

窗口最小化后不見了怎么辦,這個窗口去哪里了呢

文章插圖