2013-06-24 111 views
0

我正在學習創建簡單的Windows應用程序,我的第一個嘗試是創建帶有消息和確定按鈕的彈出窗口。我使用visual C++ 2012在C中執行此操作。我的問題是彈出窗口,但其標題和消息是中文的?我正在做所有的英語,所以任何想法,爲什麼發生這種情況,以及如何解決?如何擺脫不需要的漢字?

FYI繼承人的代碼:

#include<windows.h> 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{ 
    MessageBox(NULL, "Hello", "Warning", MB_OK); 
    return 0; 
} 

由於

+3

如果我不得不猜測:您正在編譯Unicode,但使用'char'字符串。我原以爲會引發至少一個警告,但是呃。看看你的字符串拼寫像'TEXT(「你好」)'幫助。 – cHao

+0

令人驚訝的是,如果寬字符消息框API正在使用窄字符串調用,編譯器並沒有徹底禁止這一點。當然,除非這不是真正的代碼,並且它實際上已經強制轉換爲'(LPCWSTR)',這裏沒有顯示。 – WhozCraig

+0

好吧,這是其他問題的副本,對不起,我試圖搜索,但無法找到任何東西。同樣使用'TEXT(「Hello」)已經解決了它。謝謝! – ben23f

回答

3

更改調用此:

MessageBox(NULL, L"Hello", L"Warning", MB_OK); 

快速測試(即產生編譯警告C4133)顯示正被顯示的意外的字符如果您使用非Unicode字符串調用MessageBoxW(Unicode入口點)。

+0

+1將鼠標懸停在'MessageBox'標識符上將同樣顯示工具提示'MessageBoxA'或'MessageBoxW',編輯時檢查您應該分別傳遞窄字符串還是寬字符串(編譯時檢查應該失敗,無論if你沒有直接投射錯誤的數據,但似乎沒有人提及這一點)。 – WhozCraig