在编码过程中,由于字符串过长,我们需截取部分字符串,然后以省略号代替,但因为中文占两个字节长度,而英文占一个字节长度,而在UNICODE中,都是占据两个字节,但在界面显示效果中,一个中文占据了两个英文的长度,所以,我们需要重新计算下,而不是简单的用CString的Left函数进行截取。
int num = 0;
int numc = 0;
int nume = 0;
bool bEndellipsis = false;
LPCTSTR p = szName;
while(*p)
{
if (*p > 0x80)
{
numc += 2;
}
else
{
nume++;
}
if (numc + nume > 28)
{
bEndellipsis = true;
break;
}
p++;
}
if (bEndellipsis)
{
strName = strName.Left(p - szName);
strName += _T("...");
}