Bonjour,
Je viens de lire dans un de vos tutoriels que lorsqu'on sortait sur IDCANCEL de l'exécution d'un dialogue non modal, sa fenêtre n'était jamais détruite elle était seulement rendue invisible. De ce fait la boite non modale était lancée dans le programme qui l'appelle par la séquence:
et sur la détection de l'IDCANCEL dans l'exécution de la fenêtre non modale on sortait par un simple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if(Hdlgnonmodal) ShowWindow(Hdlgnonmodal,SW_SHOWNORMAL); else Hdlgnonmodal = CreateDialog(n0instance, MAKEINTRESOURCE(Diagnonmodal), winmainkey, (DLGPROC)AnalyseDiagnonmodal);
Or, il se trouve qu'avant de lire vos tutoriels j'avais déjà écrit deux ou trois programmes qui utilisaient des boites de dialogue non modales, je m'étais rendu compte que le HWND de la boite non modale n'était jamais détruit, aussi j'avais résolu ce problème en forçant la destruction de la boite de dialogue sur le IDCANCEL, c'est à dire que derrière le IDCANCEL, j'ai la séquence:
Code : Sélectionner tout - Visualiser dans une fenêtre à part EndDialog(Diagnonmodal, 0);
et jusqu'à présent ça marche très bien, ma boite non modale est détruite et dans le programme qui l'appelle je ne fais que la recréer à chaque appel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 EndDialog(Diagnonmodal, 0); DestroyWindow( Diagnonmodal );
Question: y a-t-il une raison particulière que je n'aurais pas vue, pour laquelle il serait préférable que je revienne à une programmation plus conforme à vos tutoriels?
Merci
Partager