C++ Win32 GUI 开关语句错误

标签 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 文本被清空。错误消息是什么意思,我的代码中是否有任何我可以添加(或删除)以防止出现错误的内容?

最佳答案

问题是

LOWORD(WPARAM)

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

printf(char *);

例如。要解决此问题,请更改代码,以便它在 WPARAM 变量上调用 LOWORD。大多数窗口过程将此 wParam 命名为 wParam,因此您可能想尝试一下

LOWORD(wParam)

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

相关文章:

c - Windows 中的 ReadFile()

winapi - Win32 控制台——退格到最后一行

javascript - 我的 switch 语句直接转到 default 语句

java - 计算机中有几级解释/编译?

c++ - 可能会失败的 "post-initialization"的 eps 解析器

windows - 如何在缺少用户权限的情况下获取正在运行的进程的路径

C 中乘法后计算器崩溃

C语言switch-case : avoiding a case after used once

android - 在JNI中将字节数组转换为浮点 vector 时面临错误

c++ - 在 msvc 和 gcc 上使用 vsnprintf 时的不同行为