//=========得到字符我是这样处理的,你看有什么问题吗!!就是无法取得标点像,。“”等,有些特殊符号倒是可以取,但不明白是怎么回事! void CIme::On_Char(WPARAM wparam) //当输入是英文字符和符号时 { char ch=(char)wparam; int len = strlen( m_lpImeInput );
if( ch >= 32 && ch < 127 && len < _MAXINPUT - 1 ) //输入的是英文字母 { *( m_lpImeInput + len ) = ch; *( m_lpImeInput + len + 1) = '\0'; }
if( ch == 8 ) //BackSpace字符 { if( len == 0 ) //字符串长度为零 return; if( len == 1 ) //只有一个字符 { *m_lpImeInput = '\0'; return; } BYTE cc1,cc2; cc1 = *(m_lpImeInput + len -1); //分离字节 cc2 = *(m_lpImeInput + len -2); if( cc1 > 0xA0 && cc2 > 0xA0 ) //中文双字节的每个字节都>0xA0 *( m_lpImeInput + len -2 ) = '\0'; else //是英文字符(单字节) *( m_lpImeInput + len -1 ) = '\0'; } if(ch==13)//回车 { *( m_lpImeInput + len ) = char(13); *( m_lpImeInput + len + 1) = '\0'; } } |