2013-03-16 104 views
0

我不太清楚爲什麼會發生這種情況。我只是試圖輸出按下的鍵。斷點顯示存儲在按下變量中的正確字母。項目設置爲Unicode。C++ Win32 MessageBox奇怪的輸出

case WM_CHAR: 
    { 
     const wchar_t pressed = LOWORD(wParam); 
     ::MessageBox(hWnd, &pressed, L"Key Pressed", MB_OK); 
    } 
+0

顯示什麼? – Caesar 2013-03-16 02:42:37

+0

我不太確定。它看起來像是一長串重複的日本符號或其他東西。 – Emrys90 2013-03-16 02:43:30

+0

你正在傳遞'按下'的地址不是它的值我需要 – Kevin 2013-03-16 02:44:58

回答

0

我想通了這個問題。我認爲MessageBox繼續顯示超過wchar_t變量的內存地址的內存項目。我必須將該字母轉換爲wstring,然後將其傳遞給MessageBox。

+0

解決問題的原因是因爲std :: wstring類自動終止了字符串。所有C字符串必須以空字符('\ 0')結尾,這就是它知道它找到了字符串的結尾。 'MessageBox'函數沒有什麼不同,因爲它是一個C函數。閱讀以瞭解更多關於以空字符結尾的字符串。但是,儘可能地儘量多忘記,因爲在C++中,你應該總是使用'std :: wstring'或'std :: string'。 – 2013-03-16 07:06:29