1. 程式人生 > >如何將MFC程式改為UNICODE型別

如何將MFC程式改為UNICODE型別

1.    在Project->C/C++->Preprocessor definitions 中去除_MBCS, 增加_UNICODE
2.    在Project->Link->Category->Output->Entry-point symbol處增加wWinMainCRTStartup
3.    拷貝3個檔案到工程所在目錄:mfc42u.lib, mfcs42u.lib, atlthunk.lib (WINDDK中就有,或者直接指定這三個檔案的路徑, 否則會link失敗)
4.    資料型別 說明
a)    WCHAR Unicode字元
b)    PWSTR 指向Unicode字串的指標
c)    PCWSTR 指向一個恆定的Unicode字串的指標
d)    對應的ANSI資料型別為CHAR,LPSTR和LPCSTR
e)    ANSI/Unicode通用資料型別為TCHAR,PTSTR,LPCTSTR
5.    操作說明
a)    ANSI 操作函式以str開頭 strcpy
b)    Unicode 操作函式以wcs開頭 wcscpy
c)    MBCS 操作函式以_mbs開頭 _mbscpy
d)    ANSI/Unicode 操作函式以_tcs開頭 _tcscpy(C執行期庫),如_tcscpy,_tcscat, _tcscmp, _tcschr (查詢字串),
e)    ANSI/Unicode 操作函式以lstr開頭 lstrcpy(Windows函式)
6.    字符集說明
a)    Unicode L“string”
b)    ANSI “string”
c)    ANSI/Unicode T(“string”)
或_TEXT(“string”)if(szError[0]==_TEXT(‘J’) ){ }
7.    UNICODE 轉換成ANSI
unsigned short * unicode;
int size= WideCharToMultiByte(CP_ACP,0,unicode,-1, NULL, 0, NULL,0);
char * ansi=new char[size];
WideCharToMultiByte(CP_ACP,0,unicode,-1, ansi, NULL, 0);
8.    ANSI 轉換成UNICODE
CString ansi;
DWORD dwNum;
dwNum = MultiByteToWideChar(CP_ACP, 0, m_ANSI, -1, NULL, 0);
wchar_t *pwText = new wchar_t[dwNum];;
MultiByteToWideChar(CP_ACP, 0, m_ANSI, -1, pwText, dwNum);
9.    判斷如果文字檔案的開頭兩個位元組是0xFF和0xFE,那么就是Unicode,否則是ANSI