为了实现中文拼音序,就必须能够用拼音来比较汉字大小,默认情况下,Windows Mobile下的字符都是UNICODE,UNICODE明显并不是拼音序,所以不能直接用_tcscmp之类的函数,我记得Windows环境下可用strcoll实现,但当我在Windows Mobile环境下尝试使用strcoll时,却发现strcoll并没有被实现,郁闷。查了很多资料之后,发觉GBK码是拼音序的,OK,就用这个权宜之计吧:
#define MAX_WCHAR_LENGTH 64
#define MAX_CHAR_BUFF_LEN (MAX_WCHAR_LENGTH*2)
INT StrCmpPinyin(const WCHAR* str1, const WCHAR* str2)
{
WCHAR szWStr1[MAX_WCHAR_LENGTH];
WCHAR szWStr2[MAX_WCHAR_LENGTH];
CHAR szStr1[MAX_CHAR_BUFF_LEN];
CHAR szStr2[MAX_CHAR_BUFF_LEN];
StringCchCopyW(szWStr1, MAX_WCHAR_LENGTH, str1);
StringCchCopyW(szWStr2, MAX_WCHAR_LENGTH, str2);
WideCharToMultiByte(CP_ACP, 0, szWStr1, -1, szStr1, MAX_CHAR_BUFF_LEN, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, szWStr2, -1, szStr2, MAX_CHAR_BUFF_LEN, NULL, NULL);
return _stricmp(szStr1, szStr2);
}
测试了一下,效率还行……