XNextEvent(display,&e)
一部のウィンドウから返されたために、これwindow
が属するクラスにアクセスする必要があります。Web や本で検索した後、XSaveContextとXFindContextは便利に見えますが、使用例は見つかりませんでした。それでは試してみましょう:
がで呼び出されたときに、class Metallica
のアドレスを保存したいと思います。Metallica object
constructor
XContext
class Metallica{
private:
Window window;
int i;
.
.
public:
Metallica(...,int j, XContext *context){
.
.
i=j;
//XSaveContext(display, this->window, *context, this); // don't work
XSaveContext(display, this->window, *context, XPointer(this));
.
.
void MasterOfPuppet(){
cout << i << endl;
};
void FadeToBlack(){
cout << "OK" << endl;
};
};
};
だから今、私のxeventループで、1つのMetallicaオブジェクトのアドレスを取得したいのですが、
// at the declaration area :
// XContext Metallica_Context;
// XPointer *XPointerToOneMetallicaObject;
XFindContext(display,
e.xany.window,
Metallica_Context,
XPointerToOneMetallicaObject );
Metallica *SandMan = (Metallica*)(*XPointerToOneMetallicaObject);
SandMan->FadeToBlack(); // no problem
SandMan->MasterOfPuppet(); // return a segmentation fault
だから私は何か間違ったことをしますが、何ですか?