gpt4 book ai didi

c++ - JOYBUTTON_5 是否在 mmsystem.h 中错误定义?

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:32 27 4
gpt4 key购买 nike

我目前正在编写一些 C++ 代码来检测游戏 handle 按钮的按下情况。我正在使用以下代码来定义一组可能的按钮按下操作:

#include <windows.h>
#include <mmsystem.h>

this->buttons[0] = JOY_BUTTON1;
this->buttons[1] = JOY_BUTTON2;
...
this->buttons[31] = JOY_BUTTON32;

然后使用类似下面的东西来检测哪个按钮被按下:

joyGetPosEx(this->joyStickId, &info);

buttonPressed = false;

for(int i=0; i<32; i++){
if((info.dwButtons & this->buttons[i]) == this->buttons[i]){
buttonPressed = true;
cout << "button number " << (i+1) << "was pressed!" << endl;
}
}

if(buttonPressed === false){
cout << "could not detect button press, dwButtons was set to: " << info.dwButtons << endl;
}

这适用于游戏 handle 按钮 1-4。但是,按钮 5-32 不起作用。例如,当按下游戏 handle 上的按钮 5 时,程序认为 dwButtons 设置为 16。mmsystem.h 中定义的 JOY_BUTTON5 是257. 所以在我看来,JOY_BUTTON5 - 32 在 mmsystem 中定义不正确。是这样吗,还是我遗漏了什么?

最佳答案

我假设您使用的是 MinGW。是的,这是他们头文件中的错误。 Microsoft Win32 头文件具有不同的值(正确的值)。

MinGW 目前有:

#define JOY_BUTTON5 257
#define JOY_BUTTON6 513
#define JOY_BUTTON7 1025
#define JOY_BUTTON8 2049

应该是:

#define JOY_BUTTON5 16
#define JOY_BUTTON6 32
#define JOY_BUTTON7 64
#define JOY_BUTTON8 128

关于c++ - JOYBUTTON_5 是否在 mmsystem.h 中错误定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25259858/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com