2011-02-13 95 views
1

我正在使用Code :: Blocks和MinGW編譯器製作一個Win32 GUI項目。在這行我的代碼:C++ Win32 GUI switch語句錯誤

switch(LOWORD(WPARAM)) 

這是開關語句的菜單按鈕被點擊後,我得到了在編譯以下錯誤:

error: expected primary-expression before ')' token 

我發現這個錯誤的其他一些情況下上其他編程論壇,但答案並沒有幫助我的情況。在需要的情況下,以下是圍繞開關語句的代碼:

case WM_COMMAND: 
    switch(LOWORD(WPARAM)) 
    { 
     case ID_HELP_ABOUT: 
      MessageBox(hwnd, "--------------", "-----", MB_OK | MB_ICONINFORMATION); 
     break; 
    } 
    break; 

MessageBox文本被空白。錯誤消息的含義是什麼,在我的代碼中是否可以添加(或刪除)以防止它出現?

回答

5

的問題是,

LOWORD(WPARAM) 

呼籲的WPARAM 而不是WPARAM類型的變量的LOWORD宏。這將類似於撥打

printf(char *); 

例如,要解決此問題,請更改代碼,以便在WPARAM變量上調用LOWORD。大多數窗口過程命名爲wParam,所以你可能想嘗試

LOWORD(wParam) 
+0

謝謝,將`WPARAM`改成`wParam`完成了訣竅。 – 2011-02-13 20:38:53

4

WPARAM是一種不是一個變量的名字,你可能是指wParam或您的switch語句一些類似的變量名:

switch(LOWORD(wParam)) 
... 
2

我的猜測是,wparam應該是小寫。無法分辨,因爲確切的名稱在不可見的功能簽名中。