我想用DirectInput检查控制器按钮的名称。我的控制器是官方的SNES控制器,它与XInput不兼容,因此我必须坚持使用DirectInput。但是,我得到的只是一个垃圾字符串(例如潂瑵汤〠)。
这是我检查按钮名称的回调函数:
BOOL CALLBACK EnumDeviceObjectsCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef)
{
if (lpddoi->dwType & DIDFT_BUTTON)
{
// For the first button encountered
// the following string is 潂瑵湯〠
std::wstring buttonName(lpddoi->tszName);
}
return DIENUM_CONTINUE;
}
我也尝试过使用PS4控制器,并且得到了相同类型的字符串。两个控制器都工作正常。是不是设备驱动程序仅包含未初始化的内容,我的意思是说,制造商不必费心编写按钮名称?