[C++] rendre une fenetre modal

rendre une fenetre modal [C++] - C++ - Programmation

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!

Reply

Marsh Posté le 22-05-2002 à 14:34:05   

Reply

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]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

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]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-05-2002 à 14:45:09    

Sans les MFC, c'est pas possible?

Reply

Marsh Posté le 22-05-2002 à 14:45:37    

C'est avec Visual C++

Reply

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]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 22-05-2002 à 15:18:33    

Je vais essayer ca,  
Merci beaucoup! ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed