求助:Windows 11中RichEdit控件文本框无法显示彩色表情
解决RichEdit50W在Windows 11下仅显示黑白表情的问题
关键配置步骤
加载系统原生msftedit.dll
直接调用LoadLibrary(L"msftedit.dll")加载Windows 11自带的库文件,避免使用第三方或旧版本的dll,Win11内置的msftedit.dll已原生支持彩色表情渲染。启用彩色表情开关
创建RichEdit窗口后,发送EM_SETOPTIONS消息开启ECO_ENABLECOLOREMOJI标志:SendMessage(hwndRichEdit, EM_SETOPTIONS, ECOOP_SET, ECO_ENABLECOLOREMOJI);该标志会触发RichEdit的彩色表情渲染逻辑。
设置表情专用字体
将RichEdit的默认字体设置为Segoe UI Emoji(Win11默认预装,无需额外安装),确保表情字符使用正确字体渲染:LOGFONTW lf = {0}; wcscpy_s(lf.lfFaceName, L"Segoe UI Emoji"); lf.lfHeight = -MulDiv(12, GetDeviceCaps(GetDC(hwndRichEdit), LOGPIXELSY), 72); HFONT hFont = CreateFontIndirectW(&lf); SendMessage(hwndRichEdit, WM_SETFONT, (WPARAM)hFont, TRUE);若仅需为表情字符单独设置格式,可使用
EM_SETCHARFORMAT接口为目标字符段指定Segoe UI Emoji字体。RTF文本格式适配
若通过RTF插入表情,需在RTF代码中明确指定表情字符的字体为Segoe UI Emoji:{\rtf1\ansi\deff0{\fonttbl{\f0 Segoe UI Emoji;}}\f0 😊}
额外检查项
- 确认RichEdit窗口创建参数未包含
ES_DISABLECOLORS这类禁用彩色渲染的旧标志。 - 若之前手动安装过Segoe系列字体,建议卸载后恢复系统默认版本,避免字体冲突。
内容的提问来源于stack exchange,提问作者Ajay.kundu
相关产品推荐
相关产品推荐

