IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

DestroyWindow et plusieurs fenêtres


Sujet :

Windows

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut DestroyWindow et plusieurs fenêtres
    Bonjour,

    j'ai un problème avec la fonction Win32 DestroyWindow()

    Voici mon problème dans les grandes lignes :
    J'ai créé deux fenêtres avec CreateWindowExW et je souhaite supprimer la première car
    elle ne m'est plus d'aucune utilité.
    Je fais donc DestroyWindow(hWin1) et il me détruit la deuxième aussi...


    Voici des extraits de mon code (c'est du C openGL avec wgl seulement) :
    ma Window Class a les styles suivants
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UI_windowClass.style = CS_HREDRAW | CS_VREDRAW;
    Ma première fenêtre vide et non-affichée est créée comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UI_hDummy = CreateWindowExW(
    	(WS_EX_APPWINDOW),
    	L"UI_WindowClass",L"",
    	(WS_TILEDWINDOW),20,40,
    	40,40, (HWND) 0,0,	GetModuleHandleW(0),0);
    Ensuite, avant de créer la deuxième fenêtre, je détruis la première :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DestroyWindow(hWin); // hWin = UI_hDummy
    Puis je crée la seconde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    UI_hWindow = CreateWindowExW(
    	(WS_EX_APPWINDOW|WS_EX_ACCEPTFILES),
    	L"UI_WindowClass",L"",
    	(WS_TILEDWINDOW|WS_VSCROLL),20,40,
    	(int) (scaleXY * 640),(int) (scaleXY * 480),
    	(HWND) parentwindowhwnd,0,
    	GetModuleHandleW(0),0);
    ShowWindow(UI_hWindow, SW_SHOW);
    UpdateWindow(UI_hWindow);
    Je crée la scène OpenGL et le rendu se fait deux ou trois fois puis la fenêtre se
    ferme du fait du DestroyWindow.

    Si je fais sans DestroyWindow tout se passe bien, mais
    j'aimerais comprendre pourquoi la deuxième fenêtre se ferme alors
    qu'elle n'existait même pas avant le DestroyWindow ?

    edit : pour info, c'est une application console qui lance une fenêtre OpenGL (en fait deux).

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bon je pense que j'ai trouvé le problème, même si je ne comprends pas pourquoi il y a autant de latence après le DestroyWindow.

    Sur msdn, il est écrit que lors d'un DestroyWindow un message WM_QUIT est envoyé et que celui-ci provoque le retour d'un zéro (FALSE) par la fonction GetMessage.
    Fonction qui est utilisée après la création de la deuxième fenêtre .

    Ce qui est bizarre, c'est que le message WM_QUIT est envoyé bien avant la création de la deuxième fenêtre et encore plus avant GetMessage qui en plus recoit d'autre message entre-temps... Bizarre, bizarre...

    Edit :
    ça y est .
    Le problème venait de la WindowProcedure et de la gestion des messages. Les deux fenêtres utilisent la même procédure de fenêtre avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    case WM_DESTROY:
    	PostQuitMessage(0);
    Maintenant je test pour savoir quelle fenêtre est détruite et si c'est la première je n'exécute pas PostQuitMessage.
    My bad .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/06/2006, 17h55
  2. D6/Interbase plusieurs fenêtres utilisant le même IBDataSet
    Par Y.Guillermin dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2006, 08h27
  3. [Tkinter] Plusieurs fenêtre avec Tkinter
    Par cyrpaut dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/01/2006, 23h24
  4. TForm pour plusieurs fenêtre dans une même fonction ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/11/2005, 13h38
  5. Interface graphique avec plusieurs fenêtres
    Par Copps dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 30/03/2005, 19h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo