rendre une fenetre modal [C++] - C++ - Programmation
Marsh Posté le 22-05-2002 à 14:40:33
si tu utilises les MFC, une méthode DoModal est faite pour ça
Ex :
CMafenetre fenetre;
fenetre.DoModal();
ce code créé une instance de la classe CMaFenetre, héritant de CDialog, puis l'affiche modalement par sa méthode DoModal()
A+
[jfdsdjhfuetppo]--Message édité par Harkonnen le 22-05-2002 à 14:41:43--[/jfdsdjhfuetppo]
Marsh Posté le 22-05-2002 à 14:43:27
Si c'est en C++Builder il faut l'appeler avec ShowModal() (au lieu de Show() ou Visible = true);
[jfdsdjhfuetppo]--Message édité par antp le 22-05-2002 à 14:43:37--[/jfdsdjhfuetppo]
Marsh Posté le 22-05-2002 à 15:13:32
Sans les MFC, c'est un peu plus compliqué.
Tu dois d'abord créer une fenêtre principale, dont le hwnd sera par exemple mainHwnd
Admettons que l'appui sur un bouton de cette fenêtre déclenche l'ouverture d'une autre fenêtre modale (dont le hwnd sera noté hwnd, tu peux la créer comme suit :
1 - En réponse au message WM_CREATE de cette fenetre modale, tu désactives la fenêtre parent et tu donnes le focus à la fenêtre modale :
EnableWindow(mainHwnd,FALSE); // désactive la fenêtre parent
SetFocus(hwnd); // donne le focus à la fenêtre modale
2 - Une fois que tu veux fermer cette fenêtre modale, tu rends la main à la fenêtre parent, dans le message WM_DESTROY de la fenêtre modale :
EnableWindow(mainHwnd,TRUE); // active la fenetre parent
SetFocus(mainHwnd); // donne le focus à la fenêtre parent
Ceci devrait normalement fonctionner sans problème.
A+
[jfdsdjhfuetppo]--Message édité par Harkonnen le 22-05-2002 à 15:14:55--[/jfdsdjhfuetppo]
Marsh Posté le 22-05-2002 à 14:34:05
Savez vous comment faire pour rendre une fenetre modale? sachant que ma fenetre n'est pas une dialog box, c'est juste une "form" classique.
J'ai vu qu'il y a une proprieté "modal" , mais c'est juste en lecture... quand je mets :
nomForm.modal=true;
ca marche pas...
Savez vous comment je peux faire?
Merci!