关于判断一个字节是不是头字节的问题(IsDBCSLeadByte)

我用IsDBCSLeadByte来判断一个字节是不是头字节
可是不管是不是头字节,只要是汉字返回都是1
哪位知道这是怎么回事
以下是我的测试代码
CString sc = "一二";
TCHAR doubleByte = sc.GetAt(1);
int isDoubleByte = IsDBCSLeadByte(doubled);
isDoubleByte返回是1
应该返回0才对
非常感谢您的回答
[270 byte] By [RichardLYC] at [2008-1-9]
# 1
注意MSDN上对IsDBCSLeadByte的解释:
“The IsDBCSLeadByte function uses the ANSI code page to determine whether a specified byte is potentially a lead byte — that is, the first byte of a two-byte character in a double-byte character set (DBCS). ”

注意那个“potentially”。
换句话说,如果IsDBCSLeadByte说不是的,肯定不是,如果IsDBCSLeadByte说是的,有可能是。
steedhorse-晨星 at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 2
Zero-based index of the character in the CString object.
sc.GetAt(1);参数是从0开始的,所以你返回的是第一个了
# 3
GetAt(1)是获得“一”的后半个字节
用那个函数就应该返回0
RichardLYC at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 4
之所以出现这种情况,就是因为有些byte,即可能是某个汉字的第一个字节,也可能做汉字的第二个字节。
也就是说,汉字的前后两个字节构成的集合是有交集的。

所以,还是那句话,要想用IsDBCSLeadByte做准确判断地话,你只能判断出不是的。
steedhorse-晨星 at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 5
steedhorse(晨星)高人啊
一语道破

那哪位知道还有没有其他的可以解决中英文混合排版的方法
请赐教

有没有现成的函数
RichardLYC at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 6
我觉得只能是IsDBCSLeadByte跟手工编程结合起来。比如:

从第一个字节开始扫描字符串,直到找到一个IsDBCSLeadByte返回1的,这时,由于它前面的那个返回的是0,所以这一个必是汉字的第一个字节,既然它必是第一个,啥都不用判断,它后边的那个必是第二个。
于是,同时把这两个提取出来,作为一个汉字,然后从刚才第二个之后继续进行上面的过程。
steedhorse-晨星 at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 7
这种做法就需要从第一个字节开始跟踪
我原来的做法是
一行可以现实66个字节
直接看最后一个字节

看来这种做法不行

现在只能从头开始判断了
RichardLYC at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 8
“一行可以显示66个字节,直接看最后一个字节”。
啥意思啊?
如果想知道某一行上最后一个位置是不是汉字,同时判断最后一个和倒数第二个就是了。如果每行都是完整的话(即不存在一个汉字被分到两行上去的情况)。
steedhorse-晨星 at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 9
这事偷懒不得
vcmute-BCare4H1RestGood9! at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 10
哦,不对。。。
是得从头来。- -b
steedhorse-晨星 at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 11
只能从第一个字节开始判断。
如果不是因为multibyte处理这类问题比较麻烦,估计没人会愿意使用浪费空间较大的unicode编码。
chehw-chehw at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...
# 12
对啊
看来只能从头开始就判断是不是中文才行

有没有作这种东西的比较完整的控件
RichardLYC at 2007-10-19 > top of Msdn China Tech,VC/MFC,基础类...