我正在使用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文本被清空。错误消息是什么意思,我的代码中是否可以添加(或删除)阻止它的内容?

最佳答案

问题是

LOWORD(WPARAM)

在WPARAM类型而不是WPARAM类型的变量上调用LOWORD宏。这类似于调用
printf(char *);

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

关于c++ - C++ Win32 GUI切换语句错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4986561/

10-13 02:53