Bonjours, je cherche a créer une surcouche de Win32 permettant de créer et d'afficher une fenêtre.
J'ai donc défini une classe Window dont le constructeur enregistre la WNDCLASS, et crée la fenêtre, et dont la méthode show permettais l'affichage :
Pour augmenter la simplicitée d'utilisation, j'ai crée un thread permettant de gérer les messages envoyés par la fenetre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Window w1 = WindowFactory.createWindow(0,0,1000,1000); w1.show();
avec la windowControllerRuntime définie comme cecis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 protected Thread windowController; ... this.windowController = new Thread(&this.windowControllerRuntime);
La méthode show lance le thread et initialise isShown a true
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 private void windowControllerRuntime() { while(this.isShown) { GetMessageA(&this.message, null, 0, 0); TranslateMessage(&this.message); DispatchMessageA(&this.message); } }
Il semble y avoir un problème dans la communication entre le thread de la boucle récupérant les messages et le thread principal, de plus lors de l’exécution la fenêtre ne répond pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public override void show(bool fullScreenMode = false) { if(fullScreenMode) { ShowWindow(this.window, SW_MAXIMIZE); } else { ShowWindow(this.window, SW_SHOW); } this.isShown = true; this.windowController.start(); }
Ne comprenant pas vraiment ou est mon erreur et ne trouvant pas sur le net je me tourne une nouvelle fois vers vous pour vous demander ou est le problème.
Merci d'avance.
Partager