我有段代码,是要把一些文本向左逐个字符滚动显示出来,如下:
CString strText;
{ //假设这是某个循环体
...... //读了一行内容
while (!strText.IsEmpty())
{
...... //显示strText并延时
strText = strText.Mid(1)
}
}
strText中如果有汉字,在Mid时就会出现截取半个汉字的问题,结果显示出来的是乱码,怎么解决这个问题。我希望如果是汉字就把整个字(两个字节)都截掉。
CString strText;
{ //假设这是某个循环体
...... //读了一行内容
while (!strText.IsEmpty())
{
...... //显示strText并延时
strText = strText.Mid(1)
}
}
strText中如果有汉字,在Mid时就会出现截取半个汉字的问题,结果显示出来的是乱码,怎么解决这个问题。我希望如果是汉字就把整个字(两个字节)都截掉。
解决方案 »
- 渐变填充的问题
- PRO*C+MFC写的程序,发布时需要打包ORACLE客户端吗?
- 求《programming server-side application for win2000》的随书源码
- .exe文件中查找数据块的问题
- 求救:如何让VC6支持韩文显示,除了用unicode方式编译
- InstallShield的简单问题
- 我租了一天服务器,可是我想做一个软件能够远程重新启动它?请大家帮忙?
- who can tell me?
- MDI窗体布局,很简单
- 送分啦!
- about icmpapi.h
- 怎么从atl创建的控件的事件中获得鼠标位置信息,比如下面OnMouseMove怎么获得,参数是要做什么转换?
GBK范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0x80~0xfeBIG5范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0xa1~0xfe
还有一个办法就是用UNICODE.
如果是,当然一起截取了,如果不是,那就CONTINUE;
其实你本身就是一个字符一个字符的读,多加一点又何妨?
{
int len=strlen(str);
const char *pch=str;
*pstrResult="";
for(int index=0;index<len;index++)
{
if((*pch&128))//,高位为1,发现汉字,去除掉!
pch++;
else
*pstrResult+=*pch++;
}
}
void CHanZiDlg::OnButton2()
{
// TODO: Add your control notification handler code here
CString str;
CString strResult;
this->m_EditCtrl.GetWindowText(str);
this->ParseCharacter((LPCSTR)str,&strResult);
MessageBox(strResult);
}
----------------
上面的代码是去处edit中的所有的汉字!
你可以改一下呀!
实际上汉字的高位是1,
小生刚学VC不久,个人认为学好VC不难,但需要多加练习,因此本着这一思想也因个人需要做了这个小程序,此程序也是本人第一个完成的程序,绝无抄袭之处(如有雷同属巧合)或许有许多不足之处,敢请大家指教:)
再且,此程序只有原设想其中一个功能,其它功能正在边学边做当中.有人说这个程序也需注册,对于这一点我不敢苟同,虽然程序简单,但我还是觉得还是有许用处的.而且对于注册功能也是我学习之一.(小生学习VC两月,自觉进步甚多,同时也想在此感谢CSDN各位的大力帮助)http://www10.brinkster.com/cttt/china