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 - comment acceder a un document a partir d'une boite de dialogue


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 28
    Points : 21
    Points
    21
    Par défaut MFC - comment acceder a un document a partir d'une boite de dialogue
    Bonjour,
    Dans une application MFC (sous VS2010), en cliquant sur un menu j'ouvre une boite de dialogue. Dans l'evenement onOK(), je voudrais acceder a l'unique Doc de mon application pour y recuperer des donnees.

    dans la classe relative a ma boite de dialogue, j'essaye le code suivant:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    void Login::OnBnClickedBnconnect()
    
    {
    //crypting password
    
    Cmd5Capi md5Capi;
    
    CString out,in;
    
    GetDlgItemText(IDC_PASSWORD,in);
    
    out= md5Capi.Digest(in);
    
    SetDlgItemText(IDC_PASSWORD,out);
    
    CKenView * myview =reinterpret_cast<CKenView *>(GetParent());
    
    
    CKenDoc * pDoc = myview->GetDocument(); //erreur d'execution.
    
    pDoc->connexion = new LogInCL(m_username, m_password);
    
    AfxMessageBox(pDoc->connexion.connect());
    
    }
    j'obtiens une erreur d'execution.
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Pour récupérer ton CWinAPP, tu utilises AfxGetApp() dans ta boite de dialogue.

    Ensuite, pour récupérer le ou les document, tu peux passer par
    CWinApp::GetFirstDocTemplatePosition() et CWinApp::GetNextDocTemplatePosition() qui te retourneront tous les CDocTemplate de ton application (souvent, il n'y en a qu'un dans les applications simples).

    Ensuite sur ce CDocTemplate, tu utilises GetFirstDocPosition() et GetNextDoc() qui te retourneront le ou les CDocument associés.


    Cette page est pas mal pour expliquer la hiérarchie : http://msdn.microsoft.com/en-us/libr...(v=VS.80).aspx

    Au fait, le forum MFC est ici

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    As-tu vérifier que myview n'est pas nul ?
    En revanche, il me semble que dynamic_cast serait plus approprié que reinterpret_cast (j'avoue un doute concernant les MFC et la façon dont le CWnd est obtenu).

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    Je vous remercie pour votre aide.

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Comment as-tu résolu ton problème au final ?

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    Voici comment le probleme est resolu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                 CDocument * doc;
    	CWinApp * app = AfxGetApp();
    	POSITION pos = app->GetFirstDocTemplatePosition();
    	CDocTemplate * docTemplate = app->GetNextDocTemplate(pos);
    	pos = docTemplate->GetFirstDocPosition();
    	doc = docTemplate->GetNextDoc(pos);
     
    	CKenDoc *pDoc = static_cast<CKenDoc*>(doc);
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Commander à partir d'une boite de dialogue
    Par Audirs537 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 17/04/2013, 16h14
  2. Appeler l'aide a partir d'une boite de dialogue (BCB5)
    Par yarp dans le forum C++Builder
    Réponses: 0
    Dernier message: 26/05/2010, 10h10
  3. Réponses: 3
    Dernier message: 19/08/2008, 14h55
  4. Réponses: 2
    Dernier message: 05/05/2008, 09h07
  5. Comment recuperer les info d'un formulaire dans une boite de dialogue
    Par frutix dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2006, 11h42

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