為了實現中文拼音序,就必須能夠用拼音來比較漢字大小,默認情況下,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);
}
測試了一下,效率還行……