vc2005 CString 问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 11:46:55
在OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 中
定义 CString str;
str += nChar;错误
我改为 str += (char)nChar;
但是遇到中文就出现错误,谁能给个解决方法,谢谢了。
中文两个字节我知道,问题是怎么解决这个问题???
UINT 类型 怎么加到 CString 中???

Sadusaga 不行的关键看 怎么将 UINT 连接到 CString 后面
应该还是类型转换问题

把下面这段加入Onchar中,调试中看到汉字时nFlags 为0,做个累加判断就可以了。原理是如果是汉字的画加两次才是汉字,否则是字符。

static int i = 1;
static CString cs;

if ( 0 == nFlags )
{
if ( 2 == i )
{
// 此处即是得到的汉字。
cs += nChar;
i = 1;
TRACE( "char:%C, RepCount:%d,Flags:%d, cs:%s\n", nChar, nRepCnt, nFlags, cs );
}
else
{
i ++;
cs = nChar;
}
}

补充:

将cs += nChar;
修改为:

cs += (char) nChar;

简单啊,拼接就是了
UINT x = 100;
CString strTme;
CString str;

strTem.Format("%d", x);

str+=strTem;

最简单的方法,在编译中使用UNICODE模式,声明字符使用TCHAR,这样CString就默认使用双字节了。

中文字符是两个字节的