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

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

大家帮手啊,1000分等着你,决不失言。
...全文
93 点赞 收藏 23
写回复
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
用全角吗!
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告