WinForms 應用程序中的自定義標題欄/鑲邊
我幾乎可以肯定我知道這個問題的答案,但我希望我忽略了一些東西。
某些應用程序的標題欄和按鈕似乎具有 Vista Aero 的外觀和感覺,即使在 Windows XP 上執行也是如此。(以 Google Chrome 和 Windows Live 照片庫為例。)我知道從 WinForms 完成此操作的一種方法是創建一個無邊框表單並自己繪製標題欄/按鈕,然後覆蓋
WndProc以確保移動、調整大小、和按鈕點擊做他們應該做的事情(我不清楚具體細節,但可能會在一天閱讀文件的情況下完成。)我很好奇是否有一種不同的、更簡單的方法可以忽略. 也許我忽略了一些 API 呼叫或視窗樣式?我相信Google已經通過使用 Chrome 的滾動你自己的視窗方法為我回答了這個問題。如果有人有新資訊,我將把這個問題留到另一天,但我相信我自己已經回答了這個問題。
這是一篇包含完整程式碼範例的文章,介紹瞭如何為應用程序使用您自己的自定義“chrome”:
http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx
這看起來像一些非常好的東西。它的系列共有 3 篇文章,執行良好,而且在 Vista 上也是如此!
Google Chrome沒有使用 Vista SDK 在 XP 上實現這一點。如果您查看
src\chrome\browser\views\frame有幾個文件來定義瀏覽器框架,具體取決於系統的功能。在 XP 上,它看起來像OpaqueFrame被使用;第 19 行是這樣說的:// OpaqueFrame // // OpaqueFrame is a CustomFrameWindow subclass that in conjunction with // OpaqueNonClientView provides the window frame on Windows XP and on Windows // Vista when DWM desktop compositing is disabled. The window title and // borders are provided with bitmaps.看起來它正在使用資源
src\chrome\app\theme來繪製框架按鈕。所以看起來我希望有某種廉價的方法可以在 XP 上啟用 Vista 主題。唯一的方法是手動繪製視窗的非客戶區。我相信這樣的事情可能是正確的軌道,因為它讓 Windows 處理非客戶端的東西,比如移動和調整視窗大小。
除非有人能找到在 XP 上神奇地啟用 Vista 主題的方法,否則這是問題的答案,但我顯然無法將自己的文章標記為答案。