C ++ Win32 GUI切换语句错误

时间:2011-02-13 20:11:39

标签: c++ winapi switch-statement

我正在使用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文本已消隐。错误消息是什么意思,我的代码中有什么东西可以添加(或删除)来阻止它吗?

3 个答案:

答案 0 :(得分:5)

问题在于

LOWORD(WPARAM)

在WPARAM 类型上调用LOWORD宏而不是WPARAM类型的变量。这与调用

类似
printf(char *);

例如。要解决此问题,请更改代码,使其在WPARAM变量上调用LOWORD。大多数窗口过程都为此wParam命名,因此您可能需要尝试

LOWORD(wParam)

答案 1 :(得分:4)

WPARAM是一个类型而不是变量名,你的意思可能是wParam或者一些类似的变量名称:

switch(LOWORD(wParam))
...

答案 2 :(得分:2)

我的猜测是wparam应该是小写的。无法分辨,因为确切的名称在函数签名中是不可见的。