高分求助,这个问题真是要命? 我想在 richedit里响应 汉字的输入,比如每输入一个汉字 事先定义的计数器就加一。我试过了输入英文字母时,wm_char的响应函数onchar是会响应的。但如果输入汉字就没有响应了。这是不是richedit的痼疾,有没有办法解决?? 这个问题不解决,我做了都是白做了。先谢谢各路高手了!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有按键的时候,计算richedit里面字符串的个数汉字输入,那要看你是什么输入法,要按多个字母... 每个人都会用不同的输入法,所以感觉很难办。统计字符串个数 也让我不知道怎么下手 因为 我里面有一些特殊标记。每输入一个汉字时,怎么才能知道输入了一个汉字. 这个richedit啊 在richedit中内容改变时,增加消息响应,得到改变的内容,判断改变的内容是汉字、字母还不行就重写richedit,覆盖相关方法 richedit据朋友说,相当的不好用。。 你怎么不在EN_CHANGE/EN_UPDATE里统计呢? EN_CHANGE消息试试,判断汉字是增加还是删除用GetWindowText或者关联CString 变量 然后用CString::GetLength来判断 内容改变应该是EN_CHANGE消息 内容改变是会 触发en_change,有什么办法得到en_change触发前的richedit中的文本内容? 这样才好比较不同啊,不好意思 有点短路了,再烦请点拨下?? 我在msdn里看到说这个消息当 richedit设置为多行模式后 将不被sent?? 这个问题我好像回过汉字都是通过输入法输入的所以你拦截onchar自然是没有作用的可以考虑拦截IME的相关消息做处理 我是这么做的。首先定义一个全局变量long nGetselstart在OnKeyDown:long nend;m_rtf.GetSel(nGetselstart,nend); //m_rtf表示richedit控件在onkeyup:long lval1,lval2;m_rtf.GetSel(lval1,lval2);通过比较lval1和nGetselstart的差值,可以知道每按一次键光标移动了多少个字节位置。因为keydown与keyup总是配对的。这样做在大多数情况下程序都没有问题,但是有时如果用英文输入且太快的话,问题就出来了。请高手继续帮我指点下啊 请教一下semaphore如何实现线程同步和互斥的? 多线程 CFormView中用CSplitterWnd分割成2行2列,但CFormView中出现2条黑色下陷边框。怎样把CFormView其中一条去掉? vc6.0单选按钮是不是不支持双击事件? 多表查询添加删除操作的实现 请问如何生成一个派生自CDialogBar的类mfc不支持直接自CDialogBar派生? Windows桌面的右键菜单中有“新建”选项,如何往“新建”菜单中添加子菜单? 如何改变标题栏的颜色 SQLConfigDataSource的问题,请教各位 请问一个问题!关于类的定义! 识别 fft快速傅立叶变换问题!!急
这个richedit啊
还不行就重写richedit,覆盖相关方法
不好意思 有点短路了,再烦请点拨下??
汉字都是通过输入法输入的
所以你拦截onchar自然是没有作用的
可以考虑拦截IME的相关消息做处理
在OnKeyDown:
long nend;
m_rtf.GetSel(nGetselstart,nend); //m_rtf表示richedit控件在onkeyup:
long lval1,lval2;
m_rtf.GetSel(lval1,lval2);
通过比较lval1和nGetselstart的差值,可以知道每按一次键光标移动了多少个字节位置。因为keydown与keyup总是配对的。这样做在大多数情况下程序都没有问题,但是有时如果用英文输入且太快的话,问题就出来了。请高手继续帮我指点下啊