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文本已消隐.错误消息是什么意思,我的代码中有什么东西可以添加(或删除)以防止它出现?
问题是
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)