2015-11-08 35 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如果他們是,他們需要升級糟糕的大聲笑 –