Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Nouveau Membre du Club
    Inscrit en
    avril 2011
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : avril 2011
    Messages : 53
    Points : 32
    Points
    32

    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.

  2. #2
    Membre chevronné

    Inscrit en
    mai 2005
    Messages
    263
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 263
    Points : 664
    Points
    664

    Par défaut

    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 ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •