Bonjour à tous;
J'ai une fenêtre qui dérive de CDialog et je voudrais la rendre non modal, quelqu'un parmi vous, aurait une idée comment c'est faisable.
Merci à tous.
Version imprimable
Bonjour à tous;
J'ai une fenêtre qui dérive de CDialog et je voudrais la rendre non modal, quelqu'un parmi vous, aurait une idée comment c'est faisable.
Merci à tous.
Utiliser la fonction "Create" ?
Comme ici
Alors, là je n'ai rien compris.
Peut être, que j'ai mal compris, je ne vois par le rapport entre rendre une fenêtre modal en non modal.
Merci
Tu souhaites une CDialog en mode non modal, donc modeless...
Si c'est le cas, il faut utiliser la fonction « Create » à la place de « DoModal ».
Mais j'ai peut être mal compris ton besoin.
Si c'est le cas, tu peux expliciter ton besoin s'il te plait, j'essaierai de t'aider dans la mesure de mes possibilités. ;)
Ce n'est pas l'utilisation de la classe CDialog qui détermine si la fenêtre sera modale ou pas, mais la méthode de création utilisée :
- CDialog :: DoModal() => dialogue modal
- CDialog :: Create() => dialogue non modal (modeless en Anglais)
Reste peut-être encore à préciser qu'il n'est pas possible de changer de mode en cours de route, une fois la fenêtre créée.
Merci pour les réponses.
Juste une dernière précision, est ce qu'il faut changer seulement l'appel
MaFenetre.DoModal par MaFenetre.Create();
ou bien il faut modifier d'autres endroits dans le code?
Encore une fois Merci.
Si tu as un EndDialog() quelque part dans ton code, il faut le remplacer par un DestroyWindow() dès lors que la boite n'est plus modale.Citation:
Envoyé par Jahjouh
Il n'y a à priori rien d'autre à modifier (je ne tiens pas compte évidemment du changement de comportement de la boite dans l'appli du fait qu'elle devient non modale, et qui pourrait appeler d'autres modifs).
Faire un
Je crois que par défaut (à vérifier) la dialog en mode non modal est cachée.Code:ShowWindow( SW_SHOW );
Pour être précis, une boîte de dialogue n'a pas par défaut le style "Visible" dans l'éditeur de ressources (du moins, elle ne l'avait pas dans VC6) et c'est le DoModal() (ou la fonction DialogBox()) qui en force la visibilité.
Si on rajoute le style "Visible" à la boîte de dialogue dans les ressources, le ShowWindow() ne sera pas nécessaire.
Merci de la précision Médinoc :ccool:
Merci infiiniment à tous.
Qu'il vive ce forum.
Merci encore une fois.