如何在一個全屏窗口中覆蓋狀態(tài)欄(怎么設置電腦桌面覆蓋全屏)
出于某種原因,人們把這件事兒想得太難了。如果要創(chuàng)建一個覆蓋任務欄的全屏窗口,只需創(chuàng)建一個全屏窗口就行了,任務欄將自動退出。不要四處尋找任務欄并嘗試隱藏它:讓它做自己的事情。
和往常一樣,我們在我們的例子程序中,添加如下的代碼:
請注意,此示例程序不必擔心會破壞該全屏窗口或阻止用戶創(chuàng)建多個窗口。這只是一個個參考的例子。關鍵是要看看”創(chuàng)建全屏窗口”函數是如何編寫的。
我們使用 MonitorFromWindow 這個 AIP 來確定我們應該全屏到哪個顯示器。請注意,在多顯示器系統(tǒng)中,這可能不是任務欄所在的同一顯示器。幸運的是,我們不必擔心這一點,API 可以幫忙我們處理底層實現。
我見過人們尋找任務欄窗口的句柄,然后在它上面調用 ShowWindow(hwndTaskbar,SW_HIDE)來嘗試隱藏它。由于許多原因,這是瘋狂的。
你在評估這樣的技巧是否正確時,應該經常使用一個思維實驗:”如果兩個程序都使用了這個技巧怎么辦? 現在,你有兩個程序,這兩個程序都認為它們負責隱藏和顯示任務欄,而這兩個程序都不與另一個程序溝通協調。
結果就是一團糟。一個程序隱藏任務欄,然后另一個程序也隱藏任務欄,然后第一個程序的代碼流程已完成,因此它顯示了任務欄,但第二個程序尚未完成,并在認為此時狀態(tài)欄還是處于隱藏狀態(tài)。從這個時間點開始,事情開始走下坡路了。
如果你的程序在顯示任務欄之前崩潰,該怎么辦?任務欄現在將永久隱藏,用戶必須注銷并重新打開才能恢復其任務欄。從用戶體驗來說,這不是很好。
第三,如果根本沒有任務欄怎么辦?在終端服務器方案中,在沒有資源管理器 [存檔] 這種情況下自行運行程序是很常見的。在此配置中,沒有資源管理器,沒有任務欄。或者,也許你正在運行沒有任務欄的未來版本的Windows,它已被其他機制所取代。你的程序現在將做什么?
不要對任務欄進行任何這種混亂的操作。你只需創(chuàng)建一個全屏窗口,讓任務欄自動執(zhí)行其操作即可。
最后
Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,里面有很多關于Windows的小知識,對于廣大Windows平臺開發(fā)者來說,確實十分有幫助。
本文來自:《How do I cover the taskbar with a fullscreen window?》
