1. 程式人生 > >在vs中char型別的實參與LPCWSTR型別的形參型別不相容怎麼解決

在vs中char型別的實參與LPCWSTR型別的形參型別不相容怎麼解決

解決方法一:
通常手動輸入的字串都是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>