2015-11-08 67 views
0

所以我有一个标准的窗口,Xlib中,处理事件的创建:的xlib - 打印事件名称

while (keep_running){ 
    XNextEvent (display, &event); 
    printf("event\n"); 
} 

现在,它似乎并没有被调用暴露事件,所以我不能够绘制窗户。我可以通过印刷声明看到有一些事件被解雇,我想知道他们是什么事件。

所以基本上我的问题是,我如何获取事件名称来打印它?

我还在学习C,所以任何帮助appriciated!

+2

这都将是约xilb,因为有AREN” (C)中的任何类(作为一个构造)... printf()也使用格式字符串和参数列表,你可以“添加”(连接加法运算符)字符串在一起 –

+0

@GradyPlayer啊,谢谢,将编辑问题 –

+1

我的意思是你可以_not_不添加字符串在一起...从手机UI的评论从来不是一个好主意:) –

回答

1

,所以我不完全同意他们的设计决定不服的,但它可能是由30年前,所以现在还不是星期一早晨四分卫的时间...

类型是一个疯狂的联盟:

typedef union _XEvent { 
    int type; /* must not be changed */ 
    XAnyEvent xany; 
    XKeyEvent xkey; 
    XButtonEvent xbutton; 
    XMotionEvent xmotion; 
    XCrossingEvent xcrossing; 
    XFocusChangeEvent xfocus; 
    XExposeEvent xexpose; 
    XGraphicsExposeEvent xgraphicsexpose; 
    XNoExposeEvent xnoexpose; 
    XVisibilityEvent xvisibility; 
    XCreateWindowEvent xcreatewindow; 
    XDestroyWindowEvent xdestroywindow; 
    XUnmapEvent xunmap; 
    XMapEvent xmap; 
    XMapRequestEvent xmaprequest; 
    XReparentEvent xreparent; 
    XConfigureEvent xconfigure; 
    XGravityEvent xgravity; 
    XResizeRequestEvent xresizerequest; 
    XConfigureRequestEvent xconfigurerequest; 
    XCirculateEvent xcirculate; 
    XCirculateRequestEvent xcirculaterequest; 
    XPropertyEvent xproperty; 
    XSelectionClearEvent xselectionclear; 
    XSelectionRequestEvent xselectionrequest; 
    XSelectionEvent xselection; 
    XColormapEvent xcolormap; 
    XClientMessageEvent xclient; 
    XMappingEvent xmapping; 
    XErrorEvent xerror; 
    XKeymapEvent xkeymap; 
    long pad[24]; 
} Event; 

,所以你必须首先使用类型,以确定正在使用哪个事件:

if(event.type == KeyPress) 
{ 
    printf("keypress\n"); 
    // now you know the type you can use the specific fields from `XKeyEvent xkey`... 
} 

,或者你可以只登录类型

printf("event type = (%d)\n",event.type); 

的工会的工作,因为每个其他可能的元素也有类型为第一要素,所以他们都排队在同一地址...

+0

可能有一个函数来获取名称从事件类型int ,但我没有看到文件提供的人n ... –

+0

刚开始使用我的Virtualbox来试试这个..你能不能介绍一下这个文档的位置?我刚刚拼凑起来,因此我从随机网站上找到答案和教程,因为我找不到任何文档 –

+0

请不要告诉我这些文档是http://www.x.org/docs/X11/xlib.pdf如果他们是,他们需要升级糟糕的大声笑 –