日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sw接口是什么意思啊_为什么有些任务栏上的按钮一点就消失了

發布時間:2024/1/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sw接口是什么意思啊_为什么有些任务栏上的按钮一点就消失了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

蝎子

有時候,你會發現這么一個現象:點擊任務欄上的一個空白按鈕后,這個按鈕就消失不見了。這是為什么呢?在MSDN上,有一篇文章《some basic rules on which windows go into the taskbar》做了些介紹,簡而言之:> 如果一個窗口設置了WS_EX_APPWINDOW風格,則它會顯示在任務欄上。> 如果一個窗口是頂級且未被擁有的,則它會顯示在任務欄上。> 其他的所有情況,都不會顯示在任務欄上。

(盡管ITaskbarList接口把事情搞得有些復雜),當一個任務欄可感知(taskbar-eligible)窗口變為可見狀態時,任務欄將會為這個窗口創建一個按鈕。當它變為隱藏狀態時,任務欄會移除這個按鈕。如果窗口的狀態處于任務欄可感知(taskbar-eligible)和任務欄不可感知(taskbar-ineligible)這兩種狀態之間時,當這個窗口是可見時,則一個空白的按鈕會顯示在任務欄上。

考慮以下行為模式

> 窗口是任務欄可感知的。> 窗口如果變為可見狀態,則任務欄按鈕創建。> 窗口變成了任務欄不可感知的。> 窗口變成了不可見狀態,因為此時窗口不是任務欄可感知的,所以任務欄忽略了這個變化。

造成的結果

在任務欄會出現一個沒有掛接到任何窗口的按鈕。這個也是文檔會這樣建議:”如果你希望將一個窗口的風格進行動態的設置為一個不支持任務欄按鈕的風格,你必須先將窗口進行隱藏(通過傳入SW_HIDE到ShowWindow中),然后修改窗口的風格,最后顯示窗口?!?/p>

問題來了

為什么任務欄不對所有窗口的顯示和隱藏進行監控呢?

答案

因為這個操作是十分昂貴的。
過濾出不符合任務欄條件的窗口這一動作發生在USER32模塊內部,只有當任務欄符合條件的窗口的狀態發生了變化,它就通過HSHELL*通知消息來通知任務欄(或任何安裝了WH_SHELL鉤子的組件)。這樣,任務欄代碼就不會在沒有任何事情可做的情況下被頁換入(paged in)。

總結

這里面的狀態交互,還挺復雜的哈。等會兒,讓我把這事兒給縷縷。。。

最后

Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,里面有很多關于Windows的小知識,對于廣大Windows平臺開發者來說,確實十分有幫助。
本文來自:《What’s with those blank taskbar buttons that go away when I click on them?》

總結

以上是生活随笔為你收集整理的sw接口是什么意思啊_为什么有些任务栏上的按钮一点就消失了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。