RichEdit设置字体问题

zhy 2008-12-22 09:38:14
我用EM_SETCHARFORMAT消息动态修改RicheEdit的字体,颜色等等,颜色能正常显示,但是字体设置确没有效果,高手帮我看看为什么

CHARFORMAT cf;
cf.cbSize=sizeof(CHARFORMAT);
cf.dwMask=CFM_BOLD|CFM_COLOR|CFM_FACE| CFM_ITALIC|CFM_SIZE|CFM_UNDERLINE;
cf.dwEffects=CFE_BOLD| CFE_ITALIC| CFE_UNDERLINE ;
cf.yHeight=12*20;
cf.crTextColor=RGB(0,255,255);
strcpy((char *)cf.szFaceName,"Wingdings");
cf.bCharSet=0;
cf.bPitchAndFamily=0;
SendMessage(hRichEdit,EM_SETCHARFORMAT,SCF_ALL,(LPARAM)&cf);
...全文
625 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
guogangj 2009-02-20
  • 打赏
  • 举报
回复
我也遇到了英文不起作用的问题。查MSDN,发现这么个说明,在RichEdit 2.0的What's new中:

Smart font apply
Font change request does not apply Western fonts to Asian characters.

看来这并不是bug,而是微软有意这么干的,但我不知道怎么解决,没有合适的标志位。
cnzdgs 2008-12-22
  • 打赏
  • 举报
回复
你再加其它标志试试。
zhy 2008-12-22
  • 打赏
  • 举报
回复
SCF_DEFAULT没有什么影响,不过有点意思的是中文字体和英文字体行为有不同
设置初始化字体后,如果是中文字体,比如楷书,RichEdit加载后输入中文就按照设置的字体来
如果是英文字体,比如Wingdings,Webdings,初始化设置没有用,需要针对选区再进行设置后方正常
cnzdgs 2008-12-22
  • 打赏
  • 举报
回复
SendMessage(hRichEdit,EM_SETCHARFORMAT,SCF_ALL|SCF_DEFAULT,(LPARAM)&cf);
zhy 2008-12-22
  • 打赏
  • 举报
回复
果然可以,不过设置后新输入的字符又没有字体了,怎么办呢,难道每次输入都修改一下?
cnzdgs 2008-12-22
  • 打赏
  • 举报
回复

strcpy((char *)cf.szFaceName,"Wingdings");
改成
lstrcpy(cf.szFaceName, _T("Wingdings"));
试试。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧