我正在使用Code :: Blocks和MinGW编译器创建一个Win32 GUI项目。在我的代码的这一行:
switch(LOWORD(WPARAM))
这是单击了菜单按钮的switch语句,编译时出现以下错误:
error: expected primary-expression before ')' token
我在其他编程论坛上发现了其他一些此错误的案例,但答案对我的案例没有帮助。如果您需要它,这是围绕switch语句的代码:
case WM_COMMAND:
switch(LOWORD(WPARAM))
{
case ID_HELP_ABOUT:
MessageBox(hwnd, "--------------", "-----", MB_OK | MB_ICONINFORMATION);
break;
}
break;
MessageBox文本已消隐。错误消息是什么意思,我的代码中有什么东西可以添加(或删除)来阻止它吗?
答案 0 :(得分:5)
问题在于
LOWORD(WPARAM)
在WPARAM 类型上调用LOWORD宏而不是WPARAM类型的变量。这与调用
类似printf(char *);
例如。要解决此问题,请更改代码,使其在WPARAM变量上调用LOWORD。大多数窗口过程都为此wParam命名,因此您可能需要尝试
LOWORD(wParam)
答案 1 :(得分:4)
WPARAM
是一个类型而不是变量名,你的意思可能是wParam
或者一些类似的变量名称:
switch(LOWORD(wParam))
...
答案 2 :(得分:2)
我的猜测是wparam
应该是小写的。无法分辨,因为确切的名称在函数签名中是不可见的。