C++ 错误:‘;不良设备&x2019;未在此范围中声明

C++ 错误:‘;不良设备&x2019;未在此范围中声明,c++,xlib,xinput,C++,Xlib,Xinput,知道我为什么会犯这个错误吗 error: ‘BadDevice’ was not declared in this scope 我包括: #include <X11/Xlib.h> #包括 及 #包括 在我的类头文件中 我是这样使用它的: int ret = XIGrabDevice(display_, 2, LinuxInputManager::getWindow(), CurrentTime, None, Gra

知道我为什么会犯这个错误吗

error: ‘BadDevice’ was not declared in this scope
我包括:

#include <X11/Xlib.h>
#包括

#包括
在我的类头文件中

我是这样使用它的:

 int ret = XIGrabDevice(display_, 2,  LinuxInputManager::getWindow(),
                            CurrentTime, None, GrabModeAsync,
                            GrabModeAsync, False, &eventMask_);
        if (ret == BadValue)
            std::cout << "bad value" << std::endl;
        else if (ret == BadDevice)
            std::cout << "BadDevice" << std::endl;
        if (ret == BadMatch)
            std::cout << "BadMatch" << std::endl;
        if (ret == BadWindow)
            std::cout << "BadWindow" << std::endl;

        if (ret) {
            std::cout << "not available 3" << std::endl;
        }
int-ret=XIGrabDevice(显示,2,LinuxInputManager::getWindow(),
CurrentTime,无,GrabModeAsync,
GrabModeAsync、False和eventMask;
如果(ret==BadValue)
这就是你使用它的方式

int rc;
if ((rc = XIGrabDevice(dpy, 2,  win, CurrentTime, None, GrabModeAsync,
                       GrabModeAsync, False, &mask)) != GrabSuccess)
{
    fprintf(stderr, "Grab failed with %d\n", rc);
    return;
}
或者尝试(也可以尝试使用您的功能)

似乎是BadValue、BadDevice、BadMatch。。。将是一个int值,它们可能没有在头文件中定义,所以我会检查以确保它们在某个地方。所以,尝试使用ret变量。您的错误代码可能类似于1、2、3、4,也可能是1或0。您必须自己定义错误代码


下面是一个其他人如何使用XIGrabDevice的示例程序:

向我们展示
BadDevice
的声明,可能是一个
enum
,它是函数
XIGrabDevice
的返回值,该函数在
X11/extensions/XInput2.h
(ala)中定义。我需要自己定义这些吗??如果是这样的话,我给它们分配了什么值?好的,看起来在X头文件的任何地方都没有定义BadDevice。但是,它作为可能的返回值列在手册页上。也许手册页已经过时了?不确定…查看libxi的源代码,似乎需要执行类似
int-BadDeviceErrCode;坏设备(显示、坏设备错误代码);如果(ret==BadDeviceErrCode){}
在包含X11/extensions/Xinput.h之后(尽管据我所知,错误实际上不是由libxi中的任何函数生成的)。嗯……wierd……我想手册页有点过时了。哦,好吧。我现在忽略这个错误:)谢谢@user786653
int rc;
if ((rc = XIGrabDevice(dpy, 2,  win, CurrentTime, None, GrabModeAsync,
                       GrabModeAsync, False, &mask)) != GrabSuccess)
{
    fprintf(stderr, "Grab failed with %d\n", rc);
    return;
}
int rc;
if (!(rc = XIGrabDevice(dpy, 2,  win, CurrentTime, None, GrabModeAsync,
                       GrabModeAsync, False, &mask)))
{
    fprintf(stderr, "Grab failed with %d\n", rc);
    return;
}