在vs中char類型的實參與LPCWSTR類型的形參類型不兼容怎么解決?


設置工程屬性中的字符集Character Set為多字節字符集還是Unicode引發兩個bug后,找到如下資料:

解決方法一:
通常手動輸入的字符串都是const char*(即LPCSTR)類型的,因此只需將該句中的MessageBox改為MessageBoxA即可。
解決方法二:
參數使用“_T”宏:
MessageBox(NULL,_T("Open image failed!"),_T("error"),MB_OK);
或是:
MessageBox(NULL, L"Openimage failed!", L"error",MB_OK);
/*
************************************************************************************************************************************************
* 當工程是Unicode編碼時,_T將括號內的字符串以Unicode方式保存;當工程是多字節編碼時,_T將括號內的字符串以ANSI方式保存
* 關鍵字“L”,則是不管編碼環境是什么,都是將其后面的字符串以Unicode方式保存。
*************************************************************************************************************************************************
*/
1、用THCAR代替char
2、字符串加_T(""),如_T("你好")
3、用 _tcscpy等代替strcpy等
ANSI操作函數以str開頭,如strcpy(),strcat(),strlen();
Unicode操作函數以wcs開頭,如wcscpy,wcscpy(),wcslen();
ANSI/Unicode互為兼容的操作函數以_tcs開頭 _tcscpy(C運行期庫);
ANSI/Unicode互為兼容的操作函數以lstr開頭 lstrcpy(Windows函數);
考慮ANSI和Unicode的兼容,需要使用以_tcs開頭或lstr開頭的通用字符串操作函數。

最后加上頭文件 #include <tchar.h>


參考鏈接:http://zhidao.baidu.com/question/327887942.html?qbl=relate_question_2&word=LPWSTR


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM