1

なぜこのエラーが発生するのか考えてみてください。

error: ‘BadDevice’ was not declared in this scope

私は含めました:

#include <X11/Xlib.h>

#include <X11/extensions/XInput2.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;
        }

乾杯

ジャレット

4

1 に答える 1

0

使い方はこんな感じ

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;
}

BadValue、BadDevice、BadMatch... のいずれかが int 値になり、ヘッダー ファイルで定義されていない可能性があるため、それらがどこかにあることを確認します。したがって、ret 変数を計算してみてください。エラー コードは 1、2、3、4 のようなものかもしれませんし、1 または 0 かもしれません。エラー コードを自分で定義する必要があります。

以下は、他の誰かが XIGrabDevice をどのように使用したかのサンプル プログラムです: http://people.freedesktop.org/~whot/xi2-recipes/part5.c

于 2012-12-13T20:46:15.860 に答える