我想在 richedit里响应 汉字的输入,比如每输入一个汉字 事先定义的计数器就加一。我试过了输入英文字母时,wm_char的响应函数onchar是会响应的。但如果输入汉字就没有响应了。这是不是richedit的痼疾,有没有办法解决?? 这个问题不解决,我做了都是白做了。先谢谢各路高手了!!

解决方案 »

  1.   

    有按键的时候,计算richedit里面字符串的个数汉字输入,那要看你是什么输入法,要按多个字母...
      

  2.   

    每个人都会用不同的输入法,所以感觉很难办。统计字符串个数 也让我不知道怎么下手  因为 我里面有一些特殊标记。每输入一个汉字时,怎么才能知道输入了一个汉字. 
    这个richedit啊
      

  3.   

    在richedit中内容改变时,增加消息响应,得到改变的内容,判断改变的内容是汉字、字母
    还不行就重写richedit,覆盖相关方法
      

  4.   

    richedit据朋友说,相当的不好用。。
      

  5.   

    你怎么不在EN_CHANGE/EN_UPDATE里统计呢?
      

  6.   

    EN_CHANGE消息试试,判断汉字是增加还是删除用GetWindowText或者关联CString 变量 然后用CString::GetLength来判断
      

  7.   

    内容改变应该是EN_CHANGE消息
      

  8.   

    内容改变是会 触发en_change,有什么办法得到en_change触发前的richedit中的文本内容? 这样才好比较不同啊,
    不好意思 有点短路了,再烦请点拨下??
      

  9.   

    我在msdn里看到说这个消息当 richedit设置为多行模式后 将不被sent??
      

  10.   

    这个问题我好像回过
    汉字都是通过输入法输入的
    所以你拦截onchar自然是没有作用的
    可以考虑拦截IME的相关消息做处理
      

  11.   

    我是这么做的。首先定义一个全局变量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总是配对的。这样做在大多数情况下程序都没有问题,但是有时如果用英文输入且太快的话,问题就出来了。请高手继续帮我指点下啊