我在视类的onchar()函数中加入如下代码
int static r=0;
r++;
CString str;
str.Format("%d",r);
MessageBox(str);
当我输入 坚持不懈 这4个字时(用智能ABC一次输入)弹出5个消息框,显示r的值分别为4,5,3,2,1请大家帮我解惑,
为什么r的值是这样变化的.另我该如何判断当前输入的是汉字还是单字节字符,谢谢

解决方案 »

  1.   

    static int r=0;
    是不是应该这样?
      

  2.   

    你可以用unicode 中英文都是一个字符 或者WM_IME_CHAR来取中文字符
      

  3.   

    一个汉字占有两个字节,并且每个字节的最高位都为1,一般就用相连的两个字符的最高位是否为1来判断是否是一个汉字。可以用这个字符的值是否大于127来判断字符的最高位是否为1,以下代码可以判断字符指针ls所指的字符是否为一个汉字:
    Unsigned char c1, c2;
    c1 = *ls;
    c2 = *(ls+1);
    if(c1> 127 && c2>127)
    {
    //ls指向的位置是一个汉字
    }