对于XNextEvent(display,&e)
某些窗口的返回,我需要访问它window
所属的类,在网络和书籍上进行一些搜索后,XSaveContext和XFindContext看起来很有用,但我没有找到任何使用示例。所以让我们试试:
我有 a class Metallica
,我想在 a 中调用aMetallica object
时保存 a 的地址: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 循环中,我想取回一个 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
所以我做错了什么,但是什么?