C++ Win32 GUI switch 语句错误

Posted

技术标签:

【中文标题】C++ Win32 GUI switch 语句错误【英文标题】:C++ Win32 GUI switch statement error 【发布时间】: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 文本被空白。错误消息是什么意思,我的代码中有什么可以添加(或删除)来防止它发生的吗?

【问题讨论】:

【参考方案1】:

问题是

LOWORD(WPARAM)

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

printf(char *);

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

LOWORD(wParam)

【讨论】:

【参考方案2】:

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

switch(LOWORD(wParam))
...

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于C++ Win32 GUI switch 语句错误的主要内容,如果未能解决你的问题,请参考以下文章

将 Unity3D 用作带有 OpenGL 应用程序的 Win32 c++ 的 GUI

cx_freeze 创建 EXE 时没有基于命名的“Win32GUI”错误

在 WM_COMMAND win32 GUI C++ 中处理 WM_LBUTTONDOWN 和 WM_LBUTTONUP

Win32 C++ 中的 GetWindowText() 不起作用

我尝试使用 pip 安装 win32gui,但出现此错误。我正在使用 python 3.8.5,我也有最新版本的 pip

python import win32gui报错