【发布时间】:2019-03-27 20:48:01
【问题描述】:
我有一个文本选择/规范对话框,用户可以在其中从列表中指定字体、设置粗体、斜体等。然后我使用LOGFONT 中的信息创建CFont 以随后在CEdit 作为预览。
但是,如果用户选择 Wingdings 之类的符号字体,除非我将 LOGFONT::lfCharset 设置为 SYMBOL_CHARSET,否则预览将无法正常工作。所以,基本上只给出一个字体名称,我如何确定默认字符集应该是什么(即,我如何判断我是否应该使用SYMBOL_CHARSET)?
我看到了使用 GetTextMetrics() 的建议,但这涉及将字体设置为 DC,而且我还没有创建字体,所以...?
【问题讨论】:
-
这和c++这个标签有什么关系?
-
诚实吗?我误解了标签系统吗?我标记了这个 C++ 和 MFC 以表明我正在工作的环境,是否有必要在问题中也提到这一点?
-
@Kyudos 来自 c++ 标记信息:使用此标记解决有关使用 C++ 编译器编译的代码的问题。 那么,您遇到问题的代码在哪里用它编译,还是行为不正确?
-
你如何允许用户选择字体?如果您使用
ChooseFont()标准对话框,它会为您提供一个填充的LOGFONT,然后您可以根据需要进行操作。 -
@Kyudos 如果您使用 Win32 API
EnumFonts()函数代替自己填充 ComboBox,则将为每个安装的字体提供一个填充的LOGFONT。当用户从 ComboBox 中选择一种字体时,将该信息保存在某处以供以后使用。
标签: winapi fonts character-encoding mfc