2011-03-08 57 views

回答

2

有一堆GetThemeXxxx()函數。你可能分別尋找GetThemeFont(),GetThemeMetric()和GetThemeColor()。度量標準是一個猜測,還有其他幾個尺寸相關的標準。 GetThemeFont也返回字體大小。 MSDN庫中的Start here

+0

哇,我不知道我是如何錯過所有這些功能。乾杯。 – Quppa 2011-03-08 05:47:02

+0

GetThemeFont()和GetThemeColor()確實是要使用的函數。前者將返回字體/大小/重量/等。 (它返回一個LOGFONT),後者將返回給定TMT_TEXTCOLOR屬性的字體顏色。 – Quppa 2011-03-08 11:43:38

+0

我最終在這裏寫了一些關於這方面的內容:http://blog.quppa.net/2011/04/30/windows-theme-fonts/ – Quppa 2011-04-30 14:59:53

0

我一直無法追查GetThemeFont的一個工作示例,更不用說管理版本的VisualStyleRenderer.GetThemeFont了。檢查Mono源代碼會得到作者的評論,他們也無法讓GetThemeFont返回任何內容,而是返回null。

TMT_FONT的使用一致地引發非託管內存錯誤,並且TMT_GLYPHFONT的使用始終返回「不支持」錯誤。這個特定的api似乎是非常有缺陷的,並且(我敢說這是)不起作用。

標記爲答案的答覆根本不是答案。作者問如何開車,你指着他的汽車不會啓動。

+0

我已經添加了一個測試形式的要點來顯示GetThemeFont,VisualStyleRenderer.GetFont的管理包裝器不返回任何VisualStyleElements的非空值https://gist.github.com/1219126。如果您使用Reflector檢查方法,您會看到他們在受管理的環境中如何處理GetThemeFont - 這並不重要。 – shellscape 2011-09-15 12:42:17

+0

我已經在這裏發佈了一個WPF示例:http://blog.quppa.net/2011/10/24/windows-theme-fonts-redux-sample-code/ – Quppa 2011-10-23 16:21:38

相關問題