2010-04-23 72 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