Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > D
D Forum d'entraide sur la programmation en langage D
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/10/2011, 16h31   #1
ahoff
Invité régulier
 
Inscription : avril 2011
Messages : 37
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 37
Points : 9
Points : 9
Par défaut Surcouche Win32 (en D)

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 :
Code :
1
2
    Window w1 = WindowFactory.createWindow(0,0,1000,1000);
    w1.show();
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 :
1
2
3
protected Thread windowController;
...
this.windowController = new Thread(&this.windowControllerRuntime);
avec la windowControllerRuntime définie comme cecis :
Code :
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);
		}
	}
La méthode show lance le thread et initialise isShown a true
Code :
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();
	}
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.
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.
ahoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 09h13   #2
Niark13
Membre éprouvé
 
Inscription : mai 2005
Messages : 223
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 223
Points : 425
Points : 425
En D2, les variables statiques et globales sont thread-local par défaut, pour les rendre partagées à tous les threads, il faut utiliser le modificateur shared. Ça ne viendrait pas de ça, par hasard ?
Niark13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h35.


 
 
 
 
Partenaires

Hébergement Web