【问题标题】:C++ Win32 GUI switch statement errorC++ Win32 GUI switch 语句错误
【发布时间】:2011-02-13 20:11:39
【问题描述】:

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

【问题讨论】:

    标签: c++ winapi switch-statement


    【解决方案1】:

    问题是

    LOWORD(WPARAM)
    

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

    printf(char *);
    

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

    LOWORD(wParam)
    

    【讨论】:

      【解决方案2】:

      WPARAM 是一个类型而不是变量名,您可能是指wParam 或您的 switch 语句的一些类似变量名:

      switch(LOWORD(wParam))
      ...
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-19
          • 2017-03-19
          • 1970-01-01
          相关资源
          最近更新 更多