為了實(shí)現(xiàn)中文拼音序,就必須能夠用拼音來(lái)比較漢字大小,默認(rèn)情況下,Windows Mobile下的字符都是UNICODE,UNICODE明顯并不是拼音序,所以不能直接用_tcscmp之類(lèi)的函數(shù),我記得Windows環(huán)境下可用strcoll實(shí)現(xiàn),但當(dāng)我在Windows Mobile環(huán)境下嘗試使用strcoll時(shí),卻發(fā)現(xiàn)strcoll并沒(méi)有被實(shí)現(xiàn),郁悶。查了很多資料之后,發(fā)覺(jué)GBK碼是拼音序的,OK,就用這個(gè)權(quán)宜之計(jì)吧:
#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);
}
測(cè)試了一下,效率還行……