Boite de dialogue modeless

Résolu
hyryel Messages postés 11 Date d'inscription dimanche 30 mai 2004 Statut Membre Dernière intervention 5 août 2005 - 27 oct. 2004 à 17:20
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 2 déc. 2004 à 16:01
Bonjour à tous les programmeurs,

j'ai une question concernant les applis MFC
Boite de Dialogue
vous verrez, c'est tres simple, mais j'y arrive pas :

Donc, j'ai une application qui tourne en VC++
programmé sous Visual Studio .Net 2003.
J'ai une boite de dialogue principale
et j'aimerais afficher en même temps une autre
boite de dialogue à coté (cette boite de dialogue
à l'option ToolBox).
Donc, je fait :

CDialog toolBox( IDD_TOOLBOX );
toolBox.ShowWindow( SW_SHOW) ;

La compilation se passe bien, mais lorsque je lance
le prog, j'ai un vilain plantage

Par contre, si je fais :

toolBox.DoModal() ;

là ça marche, mais c'est pas ce que je veux, je veux
afficher les deux en même temps et pouvoir y accéder
comme je veux. (En gros, ma tool box afficheras des infos
sur le fichier sélectionné). Alors j'ai cherché et j'ai trouvé
les boite de dialogue de type modeless, mais j'ai dût mal
saisir un truc, j'arrive pas à faire fonctionner ce type de boite.

Merci d'avance pour votre aide,
moi je continu de chercher !

Hyryel

8 réponses

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
28 oct. 2004 à 11:05
voila, C tt a fait ça

SW_SHOW peut etre précisé par défaut avec la fenetre...

++

Magic Nono: l'informagicien! 8-)

PS valide la réponse (je C po pkoi, ça marche po depuis ce post auj...)
3
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 oct. 2004 à 18:53
Create
et conserve un ptr...

tant que tu le détruit pas, la 2 e fenetre existera

l'aide MSDN n'est pas mal faite
++

Magic Nono: l'informagicien! 8-)
0
hyryel Messages postés 11 Date d'inscription dimanche 30 mai 2004 Statut Membre Dernière intervention 5 août 2005
27 oct. 2004 à 21:45
Merci de ta réponse,

mais je ne comprends pas.
Je dois faire un create n'est ce pas ?
mais je le fait où ?
Parcequ'en fait, j'ouvre la boite dans
la fonction "InitInstance" du fichier CxxxApp::InitInstance.
ça donne ça :

CxxxDlg dlg;
CDialog plr ;
plr.Create( IDD_PLR ) ;
plr.ShowWindow( SW_SHOW ) ;

m_pMainWnd = &dlg;

INT_PTR nResponse = dlg.DoModal();

La fenêtre s'affiche, mais je ne peu rien faire, du fait
que l'autre est en DoModal() ;

Still searching !!

Hyryel
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
28 oct. 2004 à 09:31
exemple

DInfo*info=new DInfo(false);
info->init("MétaProg",plomp);
info->Create(IDD_DINFO);

ça fait apparaitre la fenetre & a la fin de ton prog, n'oublie pas de détruire info si il est encore ouvert...

et pas de doModal !!!

++

Magic Nono: l'informagicien! 8-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hyryel Messages postés 11 Date d'inscription dimanche 30 mai 2004 Statut Membre Dernière intervention 5 août 2005
28 oct. 2004 à 10:17
merci pour ton aide
mais j'ai trouvé entre temps.

Ce que je fais : Je place un attribut
dans la classe principale du type de ma boite de dialogue

// fichier class.cpp
CToolBox toolWindow ;

j'inclus le fichier .h de ma toolBox
//fichier class.cpp
#include "ToolBox.h"

et dans la fonction "InitInstance" de ma classe principale,
je crée l'objet :

toolWindow.Create( IDD_TOOL_BOX ) ;
toolWindow.ShowWindow( SW_SHOW ) ;

voila voila, merci de ton aide.
0
jason_red2 Messages postés 6 Date d'inscription mercredi 24 mars 2004 Statut Membre Dernière intervention 2 décembre 2004
2 déc. 2004 à 11:18
Merci pour tout les gars, ça fait une semaine que j'essaye de trouver cette solution et personne n'était foutu d'expliquer ça clairement... Sauf vous. Merci encore!

Petite mot à méditer pour tous les autres :

Ce qui se conçoit logiquement s'énnonce clairement.

Alors arrétez de vous prendre le choux pour compliquer ce qui peut être si simple.

ON EST PAS CHEZ BILL GATES !!!

Pour ma part, je suis technicien maintenance et réseau dans une grosse boîte et dans l'informatique proféssionnel, on essaye plutôt de rendre les choses le plus simple possible afin que tout le monde travail ensemble. Ceux qui s'évertuent à se la péter style "je fais tout pour qu'on me comprenne pas, comme ça j'aurais l'air plus intelligent" ne font pas très long feu. Voila, c'était mon petit coup de gueule à méditer!

Quand ça marche pas, faut faire autrement
0
hyryel Messages postés 11 Date d'inscription dimanche 30 mai 2004 Statut Membre Dernière intervention 5 août 2005
2 déc. 2004 à 15:47
Mais pas de koi jason !

tiens, sinon, c koi ta boite ?
C capgemini ?
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
2 déc. 2004 à 16:01
Merci à vous pour ce petit mot

Explication simples claires nettes et précises

c'est une des choses pour lesquelles on se bat
meme si cela est tres dur
Mon PDG m'a dis ce matin qu'en fait on est trop habitué à nos machines et du coup déformation professionnelle sur la communication entre nous.
Et vu qu'on est ni des numéros ni des machines, ça biaise et on dis la meme chose différemment.

En résumé,
on essaie de faire simple et d'utiliser parfois ce qui est fait
donc ok avec les MFC et autres assistants mais dans une certaine limite
et il est bon de connaitre API pour pouvoir réparer et modifier les MFC a notre guise
++
Magic Nono: l'informagicien! 8-)
0
Rejoignez-nous