1. 程式人生 > >IntelliSense: "const char *" 型別的實參與 "LPCTSTR" 型別的形參不相容

IntelliSense: "const char *" 型別的實參與 "LPCTSTR" 型別的形參不相容

在外面用vs2005編寫mfc程式的時候經常要MessageBox(“提示資訊”)函式,在vc6.0是沒有問題的,但是在vs2005卻會有下面的提示:

error C2664: “CWnd::MessageBoxW”: 不能將引數 1 從“const char [17]”轉換為“LPCTSTR”

這個錯誤提示的原因是VS2005預設使用的是UNICODE字符集,在引數轉換時會出錯

解決方法很簡單。

方法一:

MessageBox(_T(“你已經提交成功。”));

即在引數前加上_T()

方法二:

在新建專案時,把使用UNICODE字符集取消,如下圖:

MFC的MessageBox出錯

方法三:

選擇“專案”-》“XXX專案屬性”-》“配置屬性”-》“常規”選項中,把“字符集”改為“使用多位元組字符集”,然後確定。如下圖:

 MFC的MessageBox出錯

相關推薦

IntelliSense: "const char *" 型別參與 "LPCTSTR" 型別相容

在外面用vs2005編寫mfc程式的時候經常要MessageBox(“提示資訊”)函式,在vc6.0是沒有問題的,但是在vs2005卻會有下面的提示: error C2664: “CWnd::MessageBoxW”: 不能將引數 1 從“const char [17]”轉換為“LPCTSTR” 這個錯誤

IntelliSense: "const char *" 型別參與 "LPCTSTR" 型別相容

unicode字元問題。2010工程預設是寬字元版本解決方法:選單 專案 -> 屬性 (開啟屬性頁) -> 配置屬性 -> 常規 -> 字符集  單前選中的應該是“使用Unicode字符集”,改為“使用多位元組字符集”

"const char*"型別參與LPCTSTR型別相容問題

"const char*"型別的實參與LPCTSTR型別的形參不相容 1、LPCTSTR是什麼? A  32-bit pointer to a contant character stirng that is portable forUnicode and DBCS(

VC++2017關於專案出現"const char *" 型別參與 "char *" 型別相容錯誤的解決方法

C++專案中經常會定義如下形式的字串char *testString = "This is test string...";這樣一直用的沒有問題, 但今天突然編譯報錯了~!報錯:"const char *" 型別的實參與 "char *" 型別的形參不相容之類的錯誤, 函式形

編譯DirectX Tutorials時遇到的錯誤:"const wchar_t *" 型別參與 "LPCSTR" 型別相容

typedef _Null_terminated_ CONST CHAR *LPCSTR, *PCSTR; 可以知道LPCSTR代表了const char *型別,它是一個指向以'\0'

const.char型別參與LPWSTR型別相容

我們在用VS2012,VS2013編譯自己或者網上的原始碼時會提示如下錯誤“LPWSTR型別的實參與const.char型別形參不相容”,如果我們在VC6.0上執行時不會提示這個錯誤的。主要原因是VC6預設使用字元ANSI編碼方式而VS2012、VS2013預設使用UNI

const.char 型別參與LPWSTR 型別相容

我們在用VS2012,VS2013編譯自己或者網上的原始碼時會提示如下錯誤“LPWSTR 型別的實參與const.char 型別形參不相容”,如果我們在VC6.0上執行是不會提示這個錯誤的。主要原因是VC6預設使用字元ANSII編碼方而VS2010、VS2012、Visua

:MessageBoxW”: 能將引數 1 從“const char [5]”轉換為“LPCTSTR” 1> 與指向的型別無關;轉換要求 reinterpret_cast、C 樣式

MessageBox("系統選單","提示",MB_OK|MB_ICONINFORMATION); MessageBox(_T("系統選單"),_T("提示"),MB_OK|MB_ICONINFORMATION);  或MessageBox(L"系統選單",L"提示"

在vs中char型別參與LPCWSTR型別型別相容怎麼解決

解決方法一:通常手動輸入的字串都是const char*(即LPCSTR)型別的,因此只需將該句中的MessageBox改為MessageBoxA即可。解決方法二:引數使用“_T”巨集:MessageBox(NULL,_T("Open image failed!"),_T(

error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 無法將數 1 從“const char [9]”轉換為“LPCTSTR

報錯 連接失敗 更新 vs2015 轉換 nbsp b-s ons code error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 無法將參數 1 從“const char [9]”轉換為“LPCTSTR”

能將引數 2 從“const char [7]”轉換為“LPCTSTR”問題解決辦法

如下語句: ctrlList.InsertColumn(0, "屬性頁", LVCFMT_LEFT, 300, 0); 使用VS2005編譯時提示如下錯誤資訊: error C2664: “int CListCtrl::InsertColumn(int,LPCTSTR,in

C++編譯出現 error C2664: 能將引數 2 從“const char [5]”轉換為“LPCTSTR”解決辦法。

原因:編譯程式的時候出現這樣的錯誤,原因是在新建MFC專案的時候,設定字符集Unicode的屬性 解決方法一: 在VS的解決方案管理器視窗內,右擊你的專案“專案”,然後選“屬性”(最後一項),再點“配

const char*轉換成wstring型別

轉載自:https://blog.csdn.net/cqltbe131421/article/details/52597813 直接上程式碼:   std::wstring CATOW(const char* lpcszString)//返回值型別是wstring型別 { &n

QT型別轉換 QString轉const char*,QString轉u_short

QString str; bool ok; const char* ch=str.toAscii().constData(); u_short us=str.toUShort(&ok,10);//10表示10進位制 u_short us=str.toUShort(&

java中char型別轉換成int型別

PlanA: char ch = '9'; if (Character.isDigit(ch)){ // 判斷是否是數字 int num = Integer.parseInt(String.valueOf(ch)); System.out.println(num); }

C++ int,char,string,CString型別轉換

#include <string> //使用C++標準庫的string類時 using namespace std; //同上 #include <sstream> #include <iostream> #include <stdlib.h>

Mysql中char,varchar與text型別的區別和選用

關於char,varchar與text平時沒有太在意,一般來說,可能現在大家都是用varchar。但是當要儲存的內容比較大時,究竟是選擇varchar還是text呢?不知道。。。。。。 於是去查閱了一些資料,順便將這三種類型做個比較: (1)char:  char不用多說

呼叫函式時,型別可以不和型別一樣嗎?

答案是有可能可以。 如果可以隱式轉化,那就是可以,int和long是可以隱式轉換的,但int*和long*是不可以的,所以編譯器會報錯 如果機器上int和long佔的記憶體大小相同(一般是相同的),那可以採用型別轉換(int*)來完成 指標的話,最好一致 注意 con

mysql中char,varchar與text型別的區別

text 、 char、varchar 是資料在資料庫中的存放策略問題,設定資料型別的目的為了合理應用儲存空間,是資料庫伺服器資料型別劃分的方式。對於應用程式,把它們和string對應就可以了。 三種類型做個比較 (1)char: char不用多說了,它是定

無法從用法中推匯出方法... 的型別,請嘗試顯式指定型別

這個問題,網上基本沒得什麼解決方法,其實都是程式設計習慣造成的,在程式的世界裡,使用者自己命名必須規範,唯一,與系統框架提供的物件名稱分開。否則將會產生很多,標題問題。以上問題,很多都是沒有確切 指定,多空間命名的時候,建立了多個一樣的物件名,而在統一地方使用物件,沒有明確