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 :

Passer des variables d'un dialog à un Doc


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut Passer des variables d'un dialog à un Doc
    Salut, j'ai un formulaire qui est basé sur un CDIALOG, car je l'appelle d'un sous-dialog qui lui est appelé d'un FormView...

    Je voudrais pendre les informations de mon "formulaire" et transmettre mes variables dans mon tableau ObjectArray qui est dans mon Doc. Comment faire? Le monde qui essaye de m'aider me dise que jaurais dut tout basé sur un FormView mais je suis sûre que ca se fait a partir de dialog.

    Merci de votre aide
    Thom

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tu peux repreciser l'ordre d'appel des fenetres parce que pour moi c'est pas clair.
    c'est une CDialog appellée à partir d'une CFormView ?
    pour acceder au document il récuperer la view active.
    voir faq:
    http://c.developpez.com/faq/vc/?page...k#GetActiveWnd
    apres il suffit de faire GetDocument() pour avoir le document.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut, ok en effet c'est pas trop trop clair :p.

    Mon projet est basé sur un CFormView ensuite ce CFormView appelle un CDialog qui est un menu et à partir de ce menu je clique sur un bouton qui m'amène sur un autre CDialog qui contient mon formulaire. Bon c'est a partir de ce formulaire que je veux transmettre mes variable a mon Doc, mais j'ai essayer avec un GetDocument, mais faut etre sur le meme niveau... faut-il faire un getParent ou quelque chose de-meme

    CFORMVIEW -> CDialog -> CDialog(Formulaire)

    Merci
    Thom

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    ma reponse precedente devrait convenir voir la faq..

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Cela fonctionne meme si je suis sur un formview SDI? pcq il dise MDI sur la FAQ

    Merci

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    tu peux faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    static_cast<CFrameWnd *>(AfxGetMainWnd())->GetActiveDocument();

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    La ligne dont tu m'as donné me retourne un CDocument, mais je voudrais le mettre en ma classe dérivé de CDocument.

    Ce que j'ai faite c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private:
    CProjetDoc Doc* m_pDoc;
    ensuite j'ai mit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CGESTION_AJOUTDOC::OnEnregdoc() 
    {
        // TODO: Add your control notification handler code here
        UpdateData(TRUE);
        m_pDoc = static_cast<CFrameWnd *>(AfxGetMainWnd())->GetActiveDocument();
     
    }
    Bon quand je fais ca, ca me renvoit un erreur qui dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2440: 'static_cast' : cannot convert from 'class CDocument *' to 'class CProjetDoc *'
    Vois-tu comment forcer car j'ai essayer dautre manière étape par étape et il veut pas c toujours le même problème

    Merci
    Thom

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    c'est la bonne commande.
    il suffit de caster le getdocument sur ta classe .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     m_pDoc = static_cast<CProjetDoc *>(static_cast<CFrameWnd *>(AfxGetMainWnd())->GetActiveDocument());

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut merci, mais j'avais déjà essayer de le caster ainsi et il me renvoie la même erreur!! Sniff...

    Si ta une autre méthode je serais heureux :p

    Merci
    Thom

  10. #10
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    hum c'est pas normal
    je peux voir l'erreur provoquée par mon code ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Oui alors quand je met ton code voilà :
    erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    error C2440: 'static_cast' : cannot convert from 'class CDocument *' to 'class CProjetDoc *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    cela apparait quand je met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void CGESTION_AJOUTDOC::OnEnregdoc() 
    {
        // TODO: Add your control notification handler code here
        UpdateData(TRUE);
     
     m_pDoc = static_cast<CProjetDoc *>(static_cast<CFrameWnd *>(AfxGetMainWnd())->GetActiveDocument());     
     
    }
    Merci
    Thom

  12. #12
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    voila l'interet du static_cast démontré ...
    si le static_cast echoue c'est que ta classe CProjetDoc n'est pas dérivée de la classe CDocument.


  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut, il me semble bien quel soit dérivé de CDocument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    #include "Doc.h"
     
    class CProjetDoc : public CDocument
    {
    protected: // create from serialization only
        CProjetDoc ();
        DECLARE_DYNCREATE(CProjetDoc )
     
    // Attributes
    public:
        CObArray m_oaDocuments;
        int m_iPersCour;
    // Operations
    public:
    Il y a til un Include que je n'ai pas fait, pourtant quand on oublie un include ya tjrs 102 erreurs!!:p

    C'est difficile des fois les MFC de C++ j'aime mieux je crois le C#

    Faudrait-il que j'utilise de DoModal pour créer mes fenetre?...

    merci
    Thom

  14. #14
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    il y a autre chose c'est pas possible.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Si tu te connecte sur Skype jpourrais tenvoyer mon projet et tu checkeras


    Thom

  16. #16
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    re,
    bien la pre-declaration de la classe document sans inclure le .h contenant la classe ne permet pas au compilateur de determiner sa definition et donc l'heritage de cette classe (CProjetDoc) d'ou l'erreur .
    il te suffira de rajouter dans le source ou tu fais le cast l'include correspondant à la classe document.

  17. #17
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    pense à mettre résolu a ton post ,si c'est ok (avec le menu outils de la discussion)

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/05/2006, 17h17
  2. Réponses: 6
    Dernier message: 19/12/2005, 13h41
  3. Réponses: 11
    Dernier message: 09/12/2005, 14h59
  4. [C#][XSLT] Passer des variables
    Par Landolsi dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 30/09/2005, 14h26
  5. Réponses: 3
    Dernier message: 03/02/2005, 13h07

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