有沒有任何方法可將自定義視覺樣式(.msstyle)應用於Windows窗體應用程序,而無需更改整個系統的主題?基本上我們希望我們的應用程序保持相同的主題,而不管在控制面板中設置了什麼。請不要告訴我你是否認爲這是一個好主意。我想知道是否有任何方法可以做到這一點,不涉及專有庫,如一系列本機API調用。謝謝!將自定義視覺樣式(.msstyle)應用於單個Winforms應用程序
回答
SetWindowTheme
函數看起來像您正在尋找的解決方案。您必須執行P/Invoke才能使用它。
我發現SetWindowTheme,但我不認爲它做我想要的。這個功能似乎只允許我爲樣式目的改變窗口的類。就我所知,我不認爲它實際上允許我指定一個完全不同的.msstyles文件的路徑。 – luksan 2011-03-31 15:32:00
我可以強制它通過傳遞一個空字符串到窗口類的函數中,而不是使用樣式(AKA Windows Classic),但這不是我想要的。 – luksan 2011-03-31 15:34:27
我接受這個答案,即使它沒有回答我的問題,因爲我嘗試了不接受這裏答案的人。事實上,這個要求非常荒謬,我很確定它只能通過非常複雜的windows API調用攔截來完成,基本上是重新實現樣式庫處理代碼。 – luksan 2011-09-21 17:32:48
這可悲的是需要大量的鉤子,而不僅僅是簡單的P/Invoke。
使用託管代碼重寫/創建新控件可能會更快更好。否則,您需要在本機DLL的幫助下掛接主叫,並且非常小心您的操作。
事實上,我不知道如何正確地實施它,恐怕。那麼我會給出更有幫助的答案。整個過程看起來過於複雜,通過查看Style Soft所謂的「VisualStyler」的一個現在被廢棄的工具的代碼(該公司似乎從2014年開始死掉),這很好地支持了所有這些。
另外,如果你真的決定使用uxtheme,你會被Windows主題引擎提供的內容所限制,只限於它的視覺樣式文件格式和hickup(你現在是否還有一個好的編輯器?)。
我希望微軟在爲XP創建主題引擎時可能會做得很好,允許應用程序開發人員將它用於自己的應用程序標識。但是,在主題/ Windows產品標識方面,他們似乎從來沒有這樣做過(另一個例子是DWM沒有公開任何3D轉換功能,但通過濫用這些東西來防止應用程序做出瘋狂的事情可能是一個好主意)。
選項?
- 在託管代碼中創建自己的控件,自己處理繪圖。
- 購買適用於Win32應用程序的產品。
- 開始進入WPF,它提供了現代和理智的方式來創建應用程序主題。
- 1. Android將按鈕樣式應用於自定義視圖
- 2. 將自定義字體應用於整個Android應用程序?
- 3. 將視覺樣式應用於從C#.net程序調用的MFC對話框
- 4. 在wpf應用程序中禁用航空視覺樣式
- 5. 將樣式應用於特定單詞
- 6. 如何將樣式應用於整個Silverlight應用程序?
- 7. 我無法將樣式應用於自定義用戶控件
- 8. 如何將自定義樣式僅應用於特定元素?
- 9. 更改MFC應用程序的視覺樣式
- 10. 將自定義UIButton樣式應用於所有按鈕
- 11. 如何將自定義樣式應用於<a>標記?
- 12. 如何將自定義樣式應用於jasper html報告
- 13. 如何將自定義樣式應用於SwitchCompat
- 14. 如何將自定義樣式應用於ng-bootstrap datepicker?
- 15. 將自定義樣式表應用於QWebView
- 16. 如何將自定義樣式應用於StringValidator工具提示
- 17. 將樣式應用於自定義渲染器
- 18. 將自定義樣式應用於角網格
- 19. 如何將自定義樣式應用於AvalonDock
- 20. 將默認按鈕樣式應用於自定義按鈕類
- 21. 將自定義樣式應用於引導選擇.dropdown-menu.open
- 22. 將自定義樣式應用於地圖
- 23. 將自定義樣式應用於Autosuggest框崩潰應用程序:無法將具有TargetType'FormsCustomizableTextBox'的樣式應用於'TextBox'類型的對象
- 24. C#Winforms應用程序打開第二個Winforms應用程序
- 25. 基於對話框的MFC應用程序中的視覺樣式?
- 26. 如何將樣式應用於全局的應用程序欄?
- 27. 如何將樣式應用於Iphone應用程序
- 28. 將應用程序級樣式應用於所有文本框
- 29. 如何將全局樣式應用於Angular2應用程序?
- 30. 木衛四自定義對話框自定義樣式的Windows應用程序
您是否解決了您的問題?我也需要這個 – 2016-12-26 13:08:59
@ThiagoSuchorski我留下了一個答案,爲什麼這可能不是一個好主意。我希望它能給你一些指導。 – 2017-02-23 19:04:58