error C2664: “CWnd::MessageBoxW”: 不能將參數 1 從“char [100]”轉換為“LPCTSTR”
專案設置為 **Unicode 字符集**(默認),`MessageBox` 映射為 `MessageBoxW`,參數類型為 `LPCWSTR`(寬字符),而 `char[]` 是 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 雙模式編譯。