Winapi 如何确定要使用的LOGFONT字符集?

Winapi 如何确定要使用的LOGFONT字符集?,winapi,fonts,character-encoding,mfc,Winapi,Fonts,Character Encoding,Mfc,我有一个文本选择/规范对话框,用户可以在其中从列表中指定字体,设置粗体、斜体等。然后我使用LOGFONT中的信息创建CFont,随后在CEdit中用作预览 但是,如果用户选择Wingdings之类的符号字体,除非我将LOGFONT::lfCharset设置为symbol\u CHARSET,否则预览无法正常工作。因此,基本上只给出一个字体名称,如何确定默认字符集应该是什么(即,如何判断是否应该使用SYMBOL\u字符集) 我看到过使用GetTextMetrics()的建议,但这涉及到将字体设置为

我有一个文本选择/规范对话框,用户可以在其中从列表中指定字体,设置粗体、斜体等。然后我使用
LOGFONT
中的信息创建
CFont
,随后在
CEdit
中用作预览

但是,如果用户选择Wingdings之类的符号字体,除非我将
LOGFONT::lfCharset
设置为
symbol\u CHARSET
,否则预览无法正常工作。因此,基本上只给出一个字体名称,如何确定默认字符集应该是什么(即,如何判断是否应该使用
SYMBOL\u字符集


我看到过使用
GetTextMetrics()
的建议,但这涉及到将字体设置为DC,而且我还没有创建字体,所以…?

一旦您有了字体的名称,您就可以使用它来查看特定字符集是否存在该字体。您可以使用
DEFAULT\u CHARSET
调用它一次,如果不起作用,请使用
SYMBOL\u CHARSET
再次调用它


这是一个猜测。我还没有机会自己尝试。

这跟标签C++有什么关系?老实说?我是不是误解了标签系统?我用这个C++和MFC标记了我正在工作的环境,是否有必要在这个问题中提到“@ Kyudos从C++标签信息:使用这个标签来询问关于用C++编译器编译的代码的问题。那么,在编译代码时遇到问题或行为不正确的代码在哪里?如何允许用户选择字体?如果您使用标准对话框,它会为您提供一个填充的
LOGFONT
,然后您可以根据需要对其进行操作。@Kyudos如果您自己使用Win32 API函数填充组合框,则会为每个安装的字体提供一个填充的
LOGFONT
。将该信息保存在某个位置,以备用户从组合框中选择字体时使用。