You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 01:15:39