http://sunwill.blog.ccidnet.com/blog-htm-do-showone-uid-34371-type-blog-itemid-1257804.html
如何将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