首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VS2008 MFC MessageBox 參數類型不匹配:char 數組轉 LPCTSTR 解決方案

     編輯:程式設計綜合問答

錯誤信息

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

原因

專案設置為 **Unicode 字符集**(默認),`MessageBox` 映射為 `MessageBoxW`,參數類型為 `LPCWSTR`(寬字符),而 `char[]` 是 ANSI 窄字符串。

解決方法

方法一:強制調用 ANSI 版本

MessageBoxA(NULL, ch, "標題", MB_OK); // 顯式調用 A 版本

方法二:字符串轉換為寬字符

// 使用 ATL/MFC 轉換宏(需 #include )
USES_CONVERSION;
MessageBox(A2W(ch), _T("標題"), MB_OK);

或手動 `MultiByteToWideChar`:

WCHAR wch[200];
MultiByteToWideChar(CP_ACP, 0, ch, -1, wch, 200);
MessageBox(wch, L"標題", MB_OK);

方法三:修改專案字符集(不推薦)

專案屬性 → 字符集 → 「使用多字節字符集」。會影響整個專案所有 API 調用,遷移成本高。

最佳實踐

新代碼統一使用 `TCHAR` / `_T()` / `CString`,配合 `MessageBox` 宏,自動適配 Unicode/ANSI 雙模式編譯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved