C++ Win32 GUI切换语句错误

Gre*_*ven 1 c++ winapi switch-statement

我正在使用Code :: Blocks和MinGW编译器制作Win32 GUI项目.在我的代码的这一行:

switch(LOWORD(WPARAM))
Run Code Online (Sandbox Code Playgroud)

这是单击菜单按钮的switch语句,编译时出现以下错误:

error: expected primary-expression before ')' token
Run Code Online (Sandbox Code Playgroud)

我在其他编程论坛上发现了其他一些此错误的案例,但答案对我的案例没有帮助.如果您需要它,这里是switch语句的代码:

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

MessageBox文本已消隐.错误消息是什么意思,我的代码中有什么东西可以添加(或删除)以防止它出现?

tem*_*def 5

问题是

LOWORD(WPARAM)
Run Code Online (Sandbox Code Playgroud)

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

printf(char *);
Run Code Online (Sandbox Code Playgroud)

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

LOWORD(wParam)
Run Code Online (Sandbox Code Playgroud)