Je dois porter une lib sous windows, et j'ai un petit probleme pour integrer les messages des fenetres de Windows dans la main loop de ma lib.
Deja, voila comment se fait la gestion des evenements sous Linux:
1) on recupere le descripteur de fichier (fd) de la connection.
2) on appelle une fonction qui fait le monitoring de ce fd (fonction nommee ecore_main_fd_handler_add) a l'aide de select(), et qui est appellee comme ceci:
_ecore_x_fd_handler est une fonction appellee quand des donnees sont disponibles dans le fd.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ecore_main_fd_handler_add(fd, ECORE_FD_READ, _ecore_x_fd_handler, data);
Une solution serait la suivante :
1) Je fais une boucle sur les messages de Windows
2) je cree 2 fd et un pipe
3) quand un message est dispo, j'ecris dans un fd
4) ecore_main_fd_handler_add regarde ce qui se passe dans l'autre fd
Ca pourrait marcher, sauf qu'il faut en plus ajouter des threads (et en particulier faire tourner la boucle des messages des fenetres dans un autre thread)
Il me semble que la glib arrive a faire ce que je veux sans ma solution, mais elle utilise un fd particulier (#define G_WIN32_MSG_HANDLE 19981206) et je ne sais pas d'ou il vient
mes questions:
1) Est-ce que ma solution est bonne ?
2) Quelqu'un sait comment glib s'y prend exactement ?
3) Y a-t-il un autre moyen, plus simple pour arriver a integrer les messages des fenetres dans ma main loop ?
merci beacoup
Partager