IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC] appel de la classe CFormView


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par d�faut [MFC] appel de la classe CFormView
    Bonjour,

    J'ai un projet MFC avec une classe CFormulaire de type CFormview (Formulaire.cpp), et dans cette classe, j'ai une fonction void Ajouter()

    Cette fonction ajoute des �l�ments dans une listbox et elle marche parfaitement lorsque je l'appelle directement dans Formulaire.cpp

    Mais j'ai besoin d'appeler cette fonction dans la classe CWinApp, pour cela j'ai essay� :

    CFormulaire* formu;
    formu->Ajouter();

    Mais �a ne marche pas, il y a une erreur lors de l'ex�cution.

  2. #2
    Membre confirm�
    Homme Profil pro
    D�veloppeur en syst�mes embarqu�s
    Inscrit en
    Avril 2005
    Messages
    87
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur en syst�mes embarqu�s
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Par d�faut
    Salut,
    essaie
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    CFormulaire* formu = new CFormulaire(); 
    if(formu)
        formu->Ajouter();

  3. #3
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par d�faut
    merci mais �a ne marche pas, j'avais d�j� essay� et �a fait la m�me erreur quand j'ex�cute le prog.

  4. #4
    Membre confirm�
    Homme Profil pro
    D�veloppeur en syst�mes embarqu�s
    Inscrit en
    Avril 2005
    Messages
    87
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur en syst�mes embarqu�s
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Par d�faut
    Ton erreur se produit aussi en mode debug ?
    Si oui, est-ce que l'erreur se produit dans la fonction Ajouter ?
    quel est l'�tat de ta variable formu avant /pendant l'action Ajouter ?

  5. #5
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par d�faut
    J'ai essay� le mode d�bug (F5), j'ai aussi l'erreur.
    Je ne sais pas trop me servir de ce mode et je ne sais pas comment voir l'�tat de la variable formu.

  6. #6
    Membre confirm�
    Homme Profil pro
    D�veloppeur en syst�mes embarqu�s
    Inscrit en
    Avril 2005
    Messages
    87
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur en syst�mes embarqu�s
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Par d�faut
    place ton curseur sur la ligne et appuie sur F9 (Breakpoint). Lance une session de debug (F5). Lorsque ton programme arrivera � ce point, il s'arr�tera.
    tu peux parcourir ton code pas � pas (F10) = ligne par ligne ; ou en 'step into' (F11) : tu rentres dans les fonctions que tu rencontres.
    De l�, tu peux voir l'�tat de tes variables en les faisant glisser dans la partie 'watch' de ton d�bogueur.
    Avant de rentrer dans ta fonction Ajouter, regardes la valeur de ton pointeur formu et compare le � http://c.developpez.com/faq/vc/?page...gPointeurValue.
    tu y verra peut �tre ton erreur.
    Sinon, poursuis l'ex�cution dans ta fonction Ajouter (F11) et regarde pas � pas o� est l'erreur.

    Une autre solution est d'ex�cuter ton programme en mode debug, et lorsque l'erreur est rencontr�e, tu fais 'Recommencer' dans la boite de dialogie d'erreur pour deboguer le programme et tu regardes dans la pile o� le programme s'est arr�t�.

  7. #7
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par d�faut
    ok, j'ai essay� de faire ce mode debug
    la valeur initiale de formu est 0x00335c38
    mais apr�s, dans la fonction ajouter, il met " CXX0017: Error: cannot display value"
    je pense que c'est normal puisque formu est un objet de la classe CFormulaire qui contient elle m�me d'autre variables et fonctions.
    Bref, �a ne m'a pas trop avanc� ...

  8. #8
    Membre confirm�
    Homme Profil pro
    D�veloppeur en syst�mes embarqu�s
    Inscrit en
    Avril 2005
    Messages
    87
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur en syst�mes embarqu�s
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Par d�faut
    le fait que l'adresse de formu soit diff�rente des valeurs list�es dans la FAQ montre que ta variable est surement bien initialis�e.
    Une fois dans ta fonction Ajouter, il est normal que tu ne la voie plus ; l'objet que tu veux visualiser est 'this'. Donc dans la fen�tre de watch, tu rentres 'this' et tu devrais retrouver la m�me adresse qu'auparavant ! Tu pourras y suivre les modifications (�ventuelles) de formu.

    Rencontres-tu l'erreur avant de sortir de la fonction Ajouter ? (est-ce que l'erreur est vraiment dans cette portion de code) ?

    Sinon, proc�de comme indiqu� en seconde possibilit� dans mon pr�c�dent post : regarde la pile au moment de l'erreur.

  9. #9
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Pourquoi tu veux appler la m�thode de la formview dans l'objet application. :

    Il est plus simple de faire l'inverse en appelant AfxGetApp() dans le formulaire.

  10. #10
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par d�faut
    Citation Envoy� par Gabrielly
    Pourquoi tu veux appler la m�thode de la formview dans l'objet application. :

    Il est plus simple de faire l'inverse en appelant AfxGetApp() dans le formulaire.
    L'application ouvre un fichier texte puis l'affiche dans une listbox (la classe formulaire)
    c'est donc dans la fonction OnOpenFile() de l'application que j'appelle la m�thode ajouter de la formview.

  11. #11
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par d�faut
    Citation Envoy� par Aymerik
    tu rentres 'this' et tu devrais retrouver la m�me adresse qu'auparavant ! Tu pourras y suivre les modifications (�ventuelles) de formu.

    Rencontres-tu l'erreur avant de sortir de la fonction Ajouter ? (est-ce que l'erreur est vraiment dans cette portion de code) ?
    This a effectivement la m�me valeur que formu.
    Par contre l'erreur est bien dans cette fonction ajouter, lorsque je veux remplir la listbox, � cette ligne :
    m_Formulaire.AddString(str);

  12. #12
    Membre confirm�
    Homme Profil pro
    D�veloppeur en syst�mes embarqu�s
    Inscrit en
    Avril 2005
    Messages
    87
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur en syst�mes embarqu�s
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Par d�faut
    m_Formulaire est bien initialis� ?

  13. #13
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par d�faut
    Citation Envoy� par Aymerik
    m_Formulaire est bien initialis� ?
    oui, �a j'en suis s�r

  14. #14
    mat.M
    Invit�(e)
    Par d�faut Re: [MFC] appel de la classe CFormView
    Citation Envoy� par julien.nasser
    Mais j'ai besoin d'appeler cette fonction dans la classe CWinApp, pour cela j'ai essay� :
    .
    Erreur de programmation : on n'appelle jamais rien dans cette classe ; cette classe est une classe de base ..
    La plupart des classes h�ritent de cette classe mais on ne l'appelle jamais directement.
    trouver un bon tutoriel MFC...
    Si c'est une appli Doc/Vue comme cela semble �tre le cas , il faut presque toujours passer par la classe Document pour manipuler les donn�es

  15. #15
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Ecoute, si le contenu du fichier est mis dans un CString alors dans la m�thode OnFileOpen() tu envoie un message � CFomView pour appeler sa m�thode Ajouter() et tu recup�re le CString du CWinApp

    Comment tu affiches ta Formview : : :

  16. #16
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Je donne enti�re raison � mat.M

  17. #17
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    La classe document doit �tre au centre des �changes de donn�es (surtout lorsqu'elles sont persistantes) entre l'objet application et les vues du documents.

    Cfr Mod�le document-vue MFC

  18. #18
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par d�faut
    Citation Envoy� par Gabrielly
    Comment tu affiches ta Formview : : :
    Je l'affiche en appelant pDocTemplate->OpenDocumentFile(NULL);

    j'ai d�fini pDocTemplate comme cela :
    pDocTemplate=new CMultiDocTemplate(IDR_MAINFRAME,
    RUNTIME_CLASS(CNouveauDoc),
    // custom MDI child frame
    RUNTIME_CLASS(CChildFrame),
    RUNTIME_CLASS(CFormulaire));
    AddDocTemplate(pDocTemplate);

  19. #19
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    109
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par d�faut Re: [MFC] appel de la classe CFormView
    Citation Envoy� par mat.M
    Erreur de programmation : on n'appelle jamais rien dans cette classe ; cette classe est une classe de base ..
    J'ai essay� de cr�er un autre projet en manipulant toutes les donn�es � partir de CmonappliDoc.cpp, mais quand j'appelle la fonction OnFileOpen(), rien ne se passe. Apparemment cette m�thode ne fonctionne que dans la classe de l'application CWinApp.

    De plus, j'ai essay� de garder le OnFileOpen dans CWinApp et d'appeler la FormView par l'interm�diaire de CmonappliDoc.cpp, �a ne marche pas non plus, �a refait la m�me erreur. Donc je ne pense pas que l'erreur vienne de l�.

Discussions similaires

  1. R�ponses: 13
    Dernier message: 02/02/2005, 00h21
  2. [MFC] Cr�er dynamiquement une classe
    Par vanitom dans le forum MFC
    R�ponses: 9
    Dernier message: 11/12/2004, 13h23
  3. [MFC] appeler OnRButtonUp de la vue parente
    Par barthelv dans le forum MFC
    R�ponses: 4
    Dernier message: 15/07/2004, 16h08
  4. [PL/SQL]Appel d'une classe/m�thode java
    Par marsup54 dans le forum SQL
    R�ponses: 4
    Dernier message: 30/06/2004, 16h44
  5. [MFC] Appel d'une dialog
    Par mac07 dans le forum MFC
    R�ponses: 6
    Dernier message: 23/12/2003, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo