一百分问题:有关汉字在FlexGrid中的输入,高手进吧,分不够再加! 以前没接触过,看看*KeyAscii是不是含有隐含指针之类的东西,可以搜索输入。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 显然,输入的字符串在short FAR* KeyAscii中,问题是你只用了WORD nKeyAsciiCode = *KeyAscii; if (nKeyAsciiCode > 0x100) {// use for chinese surport sz = " "; //2 space sz.SetAt(0, nKeyAsciiCode >> 8); sz.SetAt(1, nKeyAsciiCode & 0xff); }取出其中一个汉字,为了取出所有的汉字,你应该用一个循环,(估计是以'\0'作为这个字符串的结尾的。你可以用类似如下的代码(我没有去仔细研究你的题目)for( nKeyAsciiCode = *KeyAscii; nKeyAsciiCode != '\0'; nKeyAsciiCode = *(KeyAscii++)){ 。}来考虑。 sz.SetAt(0, nKeyAsciiCode >> 8); sz.SetAt(1, nKeyAsciiCode & 0xff);不就是只取一个汉字的两个字节吗? TO shaohua(别爱我,我没钱!):说实话,这段代码不是我写的,不好意思。你能不能再给些具体的提示,我也想用循环,但我对汉字编码不了解,不知FOR内部如何处理??? 代码类下:void CWorkDlg::OnKeyPressMsflexgrid(short FAR* KeyAscii) { CString sz; WORD nKeyAsciiCode ; int iPos = 0; sz = " "; //2 space for( nKeyAsciiCode = *KeyAscii; nKeyAsciiCode != '\0'; nKeyAsciiCode = *(KeyAscii++),iPos++) { if (nKeyAsciiCode > 0x100) {// use for chinese surport sz.SetAt(iPos*2 + 0, nKeyAsciiCode >> 8); sz.SetAt(iPos*2 + 1, nKeyAsciiCode & 0xff); } }// end of for-loop. //.... flexgrid.SetText(sz); }如果还不行,再给我联系吧。最好能给我你原程序的部分代码。我可以调试好给你。 SMTP服务器是怎么实现的? 线程间通信sendmessage 静默安装包如何跳过360的提示 求救!我想在VC中用傅立叶变换做图像处理的程序 求CPropertyPage Class E 文翻译(1) 请你关注。。。。(500分) 高手何在!!!!!!!!!急!!!!!!!!!! 汉字的断句问题, 我怎么判断才不会把一个字符插到一个汉字的中间? 请教!!!关于ATL做ComDLL时传递二维数组的问题(一维传递没问题用VARIANT+SafeArray) BHO开发问题 怎样编一个能显示AutoCAD的dxf文件的程序 如何使用新闻组?
WORD nKeyAsciiCode = *KeyAscii;
if (nKeyAsciiCode > 0x100)
{// use for chinese surport
sz = " "; //2 space
sz.SetAt(0, nKeyAsciiCode >> 8);
sz.SetAt(1, nKeyAsciiCode & 0xff);
}
取出其中一个汉字,为了取出所有的汉字,你应该用一个循环,(估计是以'\0'
作为这个字符串的结尾的。你可以用类似如下的代码(我没有去仔细研究你的题
目)
for( nKeyAsciiCode = *KeyAscii; nKeyAsciiCode != '\0';
nKeyAsciiCode = *(KeyAscii++))
{
。
}
来考虑。
sz.SetAt(1, nKeyAsciiCode & 0xff);
不就是只取一个汉字的两个字节吗?
说实话,这段代码不是我写的,不好意思。
你能不能再给些具体的提示,我也想用循环,但我对汉字编码不了解,不知
FOR内部如何处理???
void CWorkDlg::OnKeyPressMsflexgrid(short FAR* KeyAscii)
{ CString sz;
WORD nKeyAsciiCode ;
int iPos = 0;
sz = " "; //2 space
for( nKeyAsciiCode = *KeyAscii; nKeyAsciiCode != '\0';
nKeyAsciiCode = *(KeyAscii++),iPos++)
{
if (nKeyAsciiCode > 0x100)
{// use for chinese surport
sz.SetAt(iPos*2 + 0, nKeyAsciiCode >> 8);
sz.SetAt(iPos*2 + 1, nKeyAsciiCode & 0xff);
}
}// end of for-loop.
//....
flexgrid.SetText(sz);
}
如果还不行,再给我联系吧。最好能给我你原程序的部分代码。
我可以调试好给你。