2011-03-03 81 views
0

我剛開始使用vC++ 2008.我只想看到一條消息(對話框)。我已經創建了我的項目作爲一個win32項目應用程序。簡單的消息框顯示在vC++

我寫下面的代碼,以查看一個MessageBox

MessageBoxW(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); 

但我米收到錯誤

錯誤C2664: 'MessageBoxW':不能從「常量字符轉換參數2 [28] '到'LPCWSTR'

這個錯誤是什麼?我需要做什麼才能看到簡單的消息框顯示。

回答

3

MessageBoxW以「寬字符串」參數,所以每個字符串前添加一個L

MessageBoxW(NULL, L"Window Registration Failed!", L"Error!", MB_ICONEXCLAMATION | MB_OK); 
+0

ty。這是工作如果我將使用函數「MessageBox」而不是「MessageBoxW」呢? – 2011-03-03 15:17:46

+0

@Ajay_Kumar:'MessageBox'是一個可以解析爲'MessageBoxA'或'MessageBoxW'的宏,這取決於你在構建時是否定義了'_UNICODE'。至少根據MS,你應該使用'_T(「string」)',它將以匹配的方式解析爲「string」或「L」string「'。 – 2011-03-03 15:54:34

0

傑裏已經說明你的編譯錯誤的原因是一個類型不匹配(你有期待寬字符串函數並通過它一個狹窄的字符串)。我建議你不要使用寬或窄特定函數(帶有W或A後綴的函數),而是使用非後綴函數(在這種情況下爲MessageBox)。 Windows API頭文件包含代碼,然後根據您的構建設置選擇正確的函數版本,也就是說,如果您構建的是Unicode版本的軟件。

0

對於MessageBoxW而不是ASCII消息框,您正在使用ASCII輸入字符串。 請嘗試改爲使用以下代碼:

MessageBoxA(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);