2010-11-03 2 views
3

Programmation en C avec la bibliothèque X11, existe-t-il un moyen d'être averti si une nouvelle fenêtre est apparue? J'ai trouvé XSetAfterFunction mais son destiné à des fins de débogage seulement ...X11 Programmation: Recevoir une notification si une nouvelle fenêtre est apparue?

Merci pour votre aide!

Heinrich

@EDIT:

Ce code résout mon problème

int main() {  
Display* display = XOpenDisplay(":2"); 

XSetWindowAttributes attributes; 
attributes.event_mask = SubstructureNotifyMask | StructureNotifyMask; 

XChangeWindowAttributes(display, 0x100, CWEventMask, &attributes); 

while (true) { 
    XEvent event; 
    XNextEvent(display, &event); 
    std::cout << "Event occured" << std::endl; 
} 

return 0; 
} 
+1

Utilisez-vous un gestionnaire de fenêtres? Laquelle? –

+0

Je n'utilise pas de gestionnaire de fenêtres. Juste Xvfb. – Erik

Répondre

2

De mémoire, vous pouvez utiliser XChangeWindowAttributes pour écouter les événements de la fenêtre racine, puis agir sur XMapEvent (ou XCreateWindowEvent ou whateverEvent selon votre définition de "une nouvelle fenêtre est apparue").

+0

J'ai posté mon code ci-dessus dans mon fil, ça ne marche pas vraiment. J'ai aussi essayé avec XSelectInput(). – Erik

+0

Eh bien, ça marche maintenant! Merci beaucoup! – Erik

Questions connexes