問題描述:
最近在用VS開發MFC程序的時候,發現使用MessageBox函數彈出對話框的時候有關漢字部分會報錯:
錯誤 C2664 “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 無法將參數 1 從“const char [19]”轉換爲“LPCTSTR” Demo c:\users\administrator\desktop\demo\demo\demodlg.cpp 112
發現程序的所有問題都是這個問題,原來是因爲VS在使用MFC的時候字符集默認是的 使用 Unicode 字符集。
(Unicode(統一碼、萬國碼、單一碼)是計算機科學領域裏的一項業界標準,包括字符集、編碼方案等。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每個字符設定了統一併且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。1990年開始研發,1994年正式公佈。)
解決方法:
只需要將原先默認的 使用 Unicode 字符集 換成使用 使用多字節字符集 ,具體方法如下所示:
右擊項目選擇項目屬性
然後通過屬性-->常規-->字符集-->使用多字節字符集,完成設置。
點擊確定之後,原先報錯的紅色波浪線應該就消失了,再次編譯,沒有問題。