Visual studio 2012 如何显示表情符号,如☔;和😢;在Microsoft MFC CListCtrl中?

Visual studio 2012 如何显示表情符号,如☔;和😢;在Microsoft MFC CListCtrl中?,visual-studio-2012,mfc,emoji,clistctrl,Visual Studio 2012,Mfc,Emoji,Clistctrl,我正在用MFC CListctrl开发一个桌面应用程序,用Unicode构建 listctrl可以正确显示!(百分比)(), 但不是表情符号☔ 还有几件事要记住 首先,您的程序应该使用RegisterWindowW而不是RegisterWindowA,因此您的窗口被实例化为Unicode窗口。如果您是针对Unicode进行编译,则会自动为MFC提供的主窗口类执行此操作 其次,您必须选择能够显示所需字符的字体。您可以检查正在使用的字体,也可以使用此代码段(在我从OnCreate获取的代码中)对其进

我正在用MFC CListctrl开发一个桌面应用程序,用Unicode构建

listctrl可以正确显示!(百分比)(),
但不是表情符号☔ 还有几件事要记住

首先,您的程序应该使用
RegisterWindowW
而不是
RegisterWindowA
,因此您的窗口被实例化为Unicode窗口。如果您是针对Unicode进行编译,则会自动为MFC提供的主窗口类执行此操作

其次,您必须选择能够显示所需字符的字体。您可以检查正在使用的字体,也可以使用此代码段(在我从OnCreate获取的代码中)对其进行更改:

您可以使用
charmap.exe
检查哪个字体支持哪些字符

我使用字体“Segoe UI”和字符0x214e成功测试,但无法输出您的0x2614,因为该字体不支持它。

谢谢Werner Henze, 我发现“SegoeUI符号”可以在Windows7中正确显示表情符号

Microsoft KB2729094标题为“中Segoe UI符号字体的更新” 假定“Windows 7和Windows Server 2008 R2可用” 将很快通过Windows Update提供


但是,“Segoe UI Symbol”在韩语字符上似乎失败(正确显示为“Segoe UI”)。

表情符号需要DirectWrite,MFC不包装它。MFC与user32的关系非常密切。据我所知,它没有与任何桌面类库集成。DirectWrite可以在所有者绘制的列表框中使用吗?(我看不出有什么理由不这样做,但尽管如此,提出这样的问题在技术上肯定是可行的。但这种基于抱怨的编程,程序员们齐声学习COM,QA编写错误报告来处理不一致的文本呈现,以及用户在廉价显示器上抱怨文本的可读性破坏了乐趣。这是does不提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦您有足够的评论,您就可以发表评论。同时,请不要使用答案发表评论。谢谢Ed Cottrell和Monacraft,我编辑了我的问题和建议将删除此答案。
CFont * pFont = m_listctrl.GetFont();
ASSERT((HFONT)m_fontListLog == nullptr);
LOGFONT logfont;
VERIFY(pFont->GetLogFont(&logfont));
_tcscpy(logfont.lfFaceName, _T("my desired font"));
VERIFY(m_font.CreateFontIndirect(&logfont));
m_listctrl.SetFont(&m_font);