2011-02-13 96 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应该是小写。无法分辨,因为确切的名称在不可见的功能签名中。