[MFC] recuperer un ptr sur Doc dans CxxxApp

recuperer un ptr sur Doc dans CxxxApp [MFC] - C++ - Programmation

Marsh Posté le 14-04-2003 à 09:06:38    

Ben tout est dans le titre je pense. Je voudrais recuperer un pointeur sur mon Document dans la methode InitInstance de la classe CxxxApp pour m'en servir pour la suite. Comment est ce que je dois faire.? Et une autre question aussi.
 
Est ce que c'est un bon style de programmation de lancer la premiere boite modale (qui est a la base de toutes les autres dans le programme) a partir de la methode InitInstance de CxxxApp?
 
Merci


Message édité par polo021 le 14-04-2003 à 09:29:01
Reply

Marsh Posté le 14-04-2003 à 09:06:38   

Reply

Marsh Posté le 14-04-2003 à 09:14:18    

polo021 a écrit :

Ben tout est dans le titre je pense. Je voudrais recuperer un pointeur sur mon Document dans la methode InitInstance de la classe CxxxApp pour m'en servir pour la suite. Comment est ce que je dois faire.? Et une autre question aussi.


Tu as la méthode GetDocument(), membre de la classe CView. Comme tu possèdes un document, je suppose que tu créé une application document/vue, et donc que tu possèdes une CxxxView associée.  
 

polo021 a écrit :


Est ce que c'est un bon style de programmation de lancer la premiere boite modale (qui est a la base de toutes les autres dans le programme) a partir de la methode InitInstance de CxxxApp?


Je vois pas ou est le problème. Etant donné que la programmation MFC agit comme ceci, on peut supposer que Microsoft sait ce qu'il fait, en tant que créateur des MFC et de Windows...


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

Marsh Posté le 14-04-2003 à 09:21:28    

Harkonnen a écrit :


Tu as la méthode GetDocument(), membre de la classe CView. Comme tu possèdes un document, je suppose que tu créé une application document/vue, et donc que tu possèdes une CxxxView associée.  


oui mais alors pour recuperer un pointeur sur ma vue?
CxxxView* ptr_view = ????;
 

Harkonnen a écrit :


Je vois pas ou est le problème. Etant donné que la programmation MFC agit comme ceci, on peut supposer que Microsoft sait ce qu'il fait, en tant que créateur des MFC et de Windows...

:(  
 

Reply

Marsh Posté le 14-04-2003 à 09:29:54    

Si tu as un doc/vue regarde du cote des DocTemplate qui est cree ds ton App

Reply

Marsh Posté le 14-04-2003 à 09:30:53    

Harkonnen a écrit :


Je vois pas ou est le problème. Etant donné que la programmation MFC agit comme ceci, on peut supposer que Microsoft sait ce qu'il fait, en tant que créateur des MFC et de Windows...


 
Oui bon quand mm c de Ms la que tu parles ;)

Reply

Marsh Posté le 14-04-2003 à 09:52:49    

VisualC++ a écrit :

Si tu as un doc/vue regarde du cote des DocTemplate qui est cree ds ton App  


je crois que je vais choisir la facilite et pas m'embeter avec ca.
Je vais tout simplement tenter de mettre toutes les variables que j'avais dans mon Document dans la classe CxxxApp et donc me servir de cette classe comme de mon document [:spamafote]


Message édité par polo021 le 14-04-2003 à 09:53:11
Reply

Marsh Posté le 14-04-2003 à 13:52:48    

polo021 a écrit :

Ben tout est dans le titre je pense. Je voudrais recuperer un pointeur sur mon Document dans la methode InitInstance de la classe CxxxApp pour m'en servir pour la suite. Comment est ce que je dois faire.? Et une autre question aussi.
 
Est ce que c'est un bon style de programmation de lancer la premiere boite modale (qui est a la base de toutes les autres dans le programme) a partir de la methode InitInstance de CxxxApp?
 
Merci


 
Au moment de l'InitInstance, le document et la vue ne sont pas encore initialisés donc mauvais endroit. Cette méthode sert à faire les initialisations uniques de l'application. Si tu veux faire des initialisations à chaque nouveau document : CDocument:: OnNewDocument() ou alors CView::InitalUpdate()
 
 
Quant à mettre le document dans la classe application : :vomi:


Message édité par Tetragrammaton IHVH le 14-04-2003 à 13:53:42

---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 14-04-2003 à 14:01:10    

Tetragrammaton IHVH a écrit :


 Si tu veux faire des initialisations à chaque nouveau document : CDocument:: OnNewDocument() ou alors CView::InitalUpdate()


 
Je ne fais jamais de nouveau document. L'utilisateur n'a pas le choix, il execute le .exe et le programme demarre, lance la 1ere boite modale (pour son user_ID) et si il est bon on enchaine vers une trentaine d'autres boites modale sinon on le laisse reentrer son userID jusqu'a ce qu'il soit bon.
 
C'est pour cela que je cherche a lancer la boite de saisie du login directement au demarrage de l'application (sans que l'utilisateur ne doive cliquer sur un bouton ou dans un menu).  
Si quelqu'un a une idee...  :jap:
 
EDIT : et puis pour le document dans l'application, je me suis mal exprime, ce n'est pas ca que je voulais dire. Mais tout simplement mettre mes variables principales dans la classe CxxxApp au lieu de les mettre dans le document.


Message édité par polo021 le 14-04-2003 à 14:02:29
Reply

Marsh Posté le 14-04-2003 à 14:05:32    

polo021 a écrit :


 
Je ne fais jamais de nouveau document. L'utilisateur n'a pas le choix, il execute le .exe et le programme demarre, lance la 1ere boite modale (pour son user_ID) et si il est bon on enchaine vers une trentaine d'autres boites modale sinon on le laisse reentrer son userID jusqu'a ce qu'il soit bon.
 
C'est pour cela que je cherche a lancer la boite de saisie du login directement au demarrage de l'application (sans que l'utilisateur ne doive cliquer sur un bouton ou dans un menu).  
Si quelqu'un a une idee...  :jap:
 
EDIT : et puis pour le document dans l'application, je me suis mal exprime, ce n'est pas ca que je voulais dire. Mais tout simplement mettre mes variables principales dans la classe CxxxApp au lieu de les mettre dans le document.


 
1) Pour ton idée, je t'ai donné la solution
 
2) pourquoi fais-tu une appli SDI si c'est pour ne pas utiliser le framework des MFC ?  :pt1cable: Recode tout depuis le début... :sarcastic:


Message édité par Tetragrammaton IHVH le 14-04-2003 à 14:13:37

---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 14-04-2003 à 14:12:17    

Tetragrammaton IHVH a écrit :


pourquoi fais-tu une appli SDI si c'est pour ne pas utiliser la framework des MFC ?  


 
Tu peux m'expliquer ce que ca veut dire?

Reply

Marsh Posté le 14-04-2003 à 14:12:17   

Reply

Marsh Posté le 14-04-2003 à 14:17:41    

polo021 a écrit :


 
Tu peux m'expliquer ce que ca veut dire?


 
 :sarcastic:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 14-04-2003 à 14:20:51    

oui ma question etait idiote, j'en conviens.
 
Mais que veux tu que j'utilise comme "type" d'application si ce n'est SDI? Et en sachant que je developpe pour windows CE avec Microsoft eMbedded Visual 3.0?
 
Je pourrais faire un Dialog Box based application mais j'avais commence avec une SDI application et j'ai deja fait pas mal de trucs dedans , je n'ai pas non plus de gros problemes insurmontables donc je ne vois pas trop l'utilite de recommencer tout en dialog based.
 
Si tu en vois une tu peux toujours m'en faire part.
 
Je pense au contraire qu'une application est beaucoup plus difficile a mettre en oeuvre en dialog based application que en SDI
http://forum.hardware.fr/forum2.ph [...] h=&subcat=


Message édité par polo021 le 14-04-2003 à 14:33:26
Reply

Marsh Posté le 14-04-2003 à 14:36:50    

polo021 a écrit :


 
Je pense au contraire qu'une application est beaucoup plus difficile a mettre en oeuvre en dialog based application que en SDI


 
Non, les appli dialog based, c'est nul.
 
Mais perso, je ne vois pas l'interet de creer une appli SDI si c'est pour ne pas utiliser ses avantages fournis avec (archi document/vue) et se faire chier avec des sales bidouilles du genre, mettre des infos dans le CWinApp alors qu'il serait plus simple de les mettre dans le CDocument.
 
Mais bon, c'est toi qui code donc tu dois mieux savoir que moi.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 14-04-2003 à 14:52:02    

Tetragrammaton IHVH a écrit :


 
Non, les appli dialog based, c'est nul.
 
Mais perso, je ne vois pas l'interet de creer une appli SDI si c'est pour ne pas utiliser ses avantages fournis avec (archi document/vue) et se faire chier avec des sales bidouilles du genre, mettre des infos dans le CWinApp alors qu'il serait plus simple de les mettre dans le CDocument.
 
Mais bon, c'est toi qui code donc tu dois mieux savoir que moi.


 
voila on y arrive. Au depart je ne voulais pas mettre de variable dans CxxApp mais bien dans le document. Mais comme je te l'ai dis, je voudrais bien qu'une boite de dialogue apparaisse d'entree a l'execution de mon programme donc on m'a conseille InitInstance de CxxxApp. Or dans cette fameuse premiere boite de dialogue je me sers d'une variable que j'ai mis dans mon document donc ma question etait (titre du topic) comment recuperer un ptr sur doc a partir de initinstance.
Et comme personne ne savait, je me suis dis que j'allais la mettre dans la classe CxxxApp au lieu de la mettre dans mon document.  
 
Tu saisis mieux maintenant?  ;)

Reply

Marsh Posté le 14-04-2003 à 14:55:32    

polo021 a écrit :


 
voila on y arrive. Au depart je ne voulais pas mettre de variable dans CxxApp mais bien dans le document. Mais comme je te l'ai dis, je voudrais bien qu'une boite de dialogue apparaisse d'entree a l'execution de mon programme donc on m'a conseille InitInstance de CxxxApp. Or dans cette fameuse premiere boite de dialogue je me sers d'une variable que j'ai mis dans mon document donc ma question etait (titre du topic) comment recuperer un ptr sur doc a partir de initinstance.
Et comme personne ne savait, je me suis dis que j'allais la mettre dans la classe CxxxApp au lieu de la mettre dans mon document.  
 
Tu saisis mieux maintenant?  ;)  


 
Et pour la 25000ième fois, je t'ai dit d'appeler ta dialogbox dans le CView::InitialUpdate() (où tu peux accéder à GetDocument(). Dis moi, comprends-tu ce que tu lis ?  :sarcastic:
 
Bon, il vaut mieux abandonner...


Message édité par Tetragrammaton IHVH le 14-04-2003 à 14:57:46

---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 14-04-2003 à 15:04:29    

arg vraiment desole
t'avais ecrit

Citation :


Si tu veux faire des initialisations à chaque nouveau document : CDocument:: OnNewDocument() ou alors CView::InitalUpdate()


 
et je suis parti sur le newdocument en oubliant completement ta deuxieme proposition.
[:sisicaivrai]
 
ben je m'en vais essayer ca alors.
 
Merci pour ta patience  :love:  

Reply

Sujets relatifs:

Leave a Replay

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