2010-04-23 69 views
6

我想製作一個組合框,其中包含計算機上已安裝的所有字體。我不確定這是如何完成的。我是否需要訪問註冊表來獲取此信息? 謝謝獲取字體列表(Win32)

+0

在C#中的最佳解決方案在這裏:http://stackoverflow.com/questions/3486546/enumerating-active-fonts-in-c-sharp-using-dll-call-to-enumfontfamiliesex-has-me – user20493 2012-09-06 18:48:04

回答

8

您應該使用Win32 API函數EnumFontFamiliesEx。您調用該函數,並傳遞一個匹配EnumFontFamExProc類型的回調函數。對於EnumFontFamiliesEx找到的每種字體,都會調用一次回調函數。

我推薦使用unicode版本(EnumFontFamiliesExW),因爲我看到ascii版本(EnumFontFamiliesExA)顯示東亞語言字體的一些非常奇怪的行爲。

鏈接的文章有示例代碼。

4

winapi的做法是使用EnumFontFamiliesEx函數。您應該使用默認參數DEFAULT_CHARSET傳遞填充結構以列出所有安裝的字體。

請參閱MSDN以獲取更多信息。

+0

或'EnumFontFamilies 「如果你不需要所有那些」前「的能力...... – 2010-04-23 22:00:02