暴难问题:关于richedit20的字体问题,非微软专家能解决的话,送1000分

chenzhou35 2002-07-31 04:02:00
在richedit20下,设置字体为某中文字体(比如楷体),输入汉字确实是楷体,但是一旦输入英文字符(在任何位置),这些英文字符字体立即变成了Arial字体(而且有意思的是,如果再输入汉字,汉字仍然是楷体的)。类似的情况也出现在fixedsys字体。

大家帮手啊,1000分等着你,决不失言。
...全文
152 23 打赏 收藏 举报
写回复
23 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xiedewei 2010-06-01
关掉 dual-font:

GetRichEditCtrl().SendMessage(EM_SETLANGOPTIONS, 0, (GetRichEditCtrl().SendMessage(EM_GETLANGOPTIONS, 0, 0 ) & ~IMF_AUTOFONT ) );

http://blog.csdn.net/zys85/archive/2008/06/05/2513609.aspx
  • 打赏
  • 举报
回复
chenzhou35 2002-08-07
查msdn得到一下信息,可见这应该不是一个Bug,而是一个专门的设计,而且应该也不涉及到Unicode的问题。
那么有谁知道怎么可以屏蔽这个功能。

Dual-font: support The keyboard can automatically switch fonts when the active font is inappropriate for current keyboard, for example, Kanji characters in Times New Roman.
Smart font apply: Font change request does not apply Western fonts to Asian characters.
  • 打赏
  • 举报
回复
wufeng28 2002-08-01
不可能吧,我的挺好的啊,??
  • 打赏
  • 举报
回复
YP2002CN 2002-08-01
转换宽字符用
首先导入最新的richedit20.dll.. 然后修改*.rc上的richedit为richedit20W
  • 打赏
  • 举报
回复
YP2002CN 2002-08-01
由于richedit需要支持多语言格式所以他会自动切换多语言格式的代码页面.
我想你是否可以自己继承一个richedit..然后做自己的处理.
  • 打赏
  • 举报
回复
chenzhou35 2002-08-01
help!!!!!!!!!!!!!!
  • 打赏
  • 举报
回复
chenzhou35 2002-07-31
简单的更换了一下,一样,没有任何改变。
  • 打赏
  • 举报
回复
111222 2002-07-31
把你的richedit也换成宽字符的就成了
  • 打赏
  • 举报
回复
111222 2002-07-31
msn用的richedit是RichEdit20W
icq用的是RichEdit20A

就这么点儿差别!!!!!!!
  • 打赏
  • 举报
回复
sunbo 2002-07-31
我曾经有一个程序在NT4.0很好,在Win2000里 Professional有问题,也是字体问题,但与rechedit2.0无关,奇怪的是改为“宋体”后,两边都没问题。
  • 打赏
  • 举报
回复
chenzhou35 2002-07-31
而且,很显然的是,msn messenger就绕过去了。但是不知道它是m$自己打了补丁还是怎么弄的。

期待高手!!!!
  • 打赏
  • 举报
回复
chenzhou35 2002-07-31
和系统没有关系,据说这是rechedit2.0的一个bug,但是不知道有没有高手能有办法绕过去。
  • 打赏
  • 举报
回复
zijingzelan168 2002-07-31
换个系统
  • 打赏
  • 举报
回复
sunbo 2002-07-31
换一个操作系统试试,看看有没有问题。
  • 打赏
  • 举报
回复
chenzhou35 2002-07-31
我需要的效果,是如果我设置了楷体,那么无论我输入中文还是英文(无论半角还是全角)都要显示为楷体。

而且我说的是richedit2.0,不是edit,也不是richedit1.0,好像在richedit1.0下都是正确的,但是richedit2.0就不行了。
  • 打赏
  • 举报
回复
chenzhou35 2002-07-31
用全角当然可以,全角的根本就是汉字。我说的英文字符指的半角的英文字符,而且,我们也不能强迫用户使用全角的英文吧,太难看了。:)
  • 打赏
  • 举报
回复
shu 2002-07-31
用CEdit简单试了一下:m_myedit.setfont(m_font); 没有你说的问题。
  • 打赏
  • 举报
回复
punpuny 2002-07-31
我试了一下,没问题啊。在英文输入下,使用Times New Roman,输入英文字很正常;然后切换到中文,这时肯定有默认的中文字体,比如我改成“黑体”,输入中文也很正常。
如果再切换到英文,就又是Times New Roman,切换到中文就是黑体,一切正常。
  • 打赏
  • 举报
回复
chenzhou35 2002-07-31
当然有必要保持。你试试msn messenger,它就保持了,而且也用了richedit20,但是icq就无法保持,它用的也是richedit20。

况且,如果不保持的话,它怎么知道我的英文字符想用什么字体,总不能臆测我想用Arial吧。

再说,如果英文字符不支持这些字体那还说的过去,问题是它又支持,而且我可以使用SetSelectionCharFormat()直接吧这些英文字符设置成“楷体”的(显示也正确:楷体的英文字符),但是我即使在这些楷体的英文字符之间插入英文字符它也会变成Arial的,这总不对了吧,按习惯,它应该继承前一个字符(如果汉字不行,英文不可能也不行吧)的字体啊。
  • 打赏
  • 举报
回复
classy 2002-07-31
用全角吗!
  • 打赏
  • 举报
回复
加载更多回复(3)
相关推荐
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2002-07-31 04:02
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……