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] débutant probleme appel de fonction


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 43
    Points
    43
    Par défaut [MFC] débutant probleme appel de fonction
    Bonjour à tous

    Mon problème : la tache que j'ai à faire nécessite 2 infos
    - une liste de nom disponible dans CAngelView
    - un motif (CString) choisi dans CTrouverMotif

    j'ai choisi comme solution de creer une fct dans CAngelView et de faire appel à cette fct dans CTrouverMotif en passant mon CString comme argument. Mon appel de fonction ne fonctionne pas.

    dans CAngelView.cpp, j'ai une fct public (déclarée avant dans CAngelView.h)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void majabsence(CString motif);
    dans la class CTrouverMotif j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAngelView::majabsence(raison)
    Résultat, il me trouve pas la fonction

    Peut on appeler une fonction crée dans une classe dans toutes les autres classes ? Si oui comment ?

    D'avance merci pour la(es) réponse(s)

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    tu as un petit probleme C++ ,
    une fonction s'invoque a travers un objet d'une classe :
    tu devrais avoir quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CAngelView *m_pMyAngelView ; // declarée/affectée quelque part ..
    m_pMyAngelView->majabsence(raison);
    l'appel d'une fonction a travers un objet se faisant comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CAngelView m_MyAngelView ; 
    m_MyAngelView.majabsence(raison);
    mais cette derniere declaration est impossible dans ton cas car un objet view est instancié par le systeme .
    tu ne disposes pas de variable objet dessus.
    mais tu peux obtenir un pointeur sur la view active....
    (c'est expliqué dans mon tuto ).

    la syntaxe que tu as utilisée s'applique a des fonctions statiques à la classe.


  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Février 2004
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Il faut créer un objet de Classe CAngelView et appeler la focntion avec

    comme :

    CAngelView* pAngel = new CAngelView(); // dépend du contructeur déclaré

    pAngel->majabsence(raison);

    le tout dans CTrouverMotif

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par mzhunix
    Il faut créer un objet de Classe CAngelView et appeler la focntion avec

    comme :

    CAngelView* pAngel = new CAngelView(); // dépend du contructeur déclaré

    pAngel->majabsence(raison);

    le tout dans CTrouverMotif
    justement le contructeur est protected ,pour attirer l'attention du programmeur .
    un objet graphique view ne se declare par un new .
    c'est l'architecture MFC par le biai des documents templates qui fait le boulot. (cf mon post precedent).


  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Bonjour

    Merci pour toutes ces réponses.

    J'avais déja essayé la solution de Mzhunix et je savais que ca ne marchais pas mais sans savoir pourquoi. Voila qui est fait.

    Je file étudier ton tuto

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    Pour récupérer le pointeur sur la view active c’est une question de contexte.
    Tu es ou au moment ou tu en as besoin dans une dialogue ?
    si la dialogue est lancée a partir de la view ,c’est très facile.


  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Salut Farscape

    pour répondre à ta question:
    de la fenetre main(CAngelView qui contient un CArray de nom ), en cliquant sur une checkbox, je lance une dialogue non modale me permettant de faire le choix du motif puis en validant sur la dialogue, je veux maj une Clistbox multicolonne (qui est sur la dialogue) avec le nom et le motif mais sans fermer la dialogue.

    la seule chose est qu'au moment de l'affichage de la dialogue non modal, la barre en haut de la fenetre main devient bleu clair ce qui me fait dire qu'elle n'est plus active (vrai faux ??)

    j'ai essayé plein de truc à partir de ton tuto mais sans succes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CMainFrame * ptheframe = static_cast<CMainFrame*>(AfxGetMainWnd());
    CAngelView * ptheframe = static_cast<CAngelView*>(AfxGetMainWnd());
    CRecordView * ptheframe = static_cast<CRecordView*>(AfxGetMainWnd());
    CAngelView * ptheframe = static_cast<CAngelView*>(GetDlgItem(IDD_ANGEL_FORM));
    .................
    Quand il arrive à créer le pointeur, qd je fais pointeur-> le menu contextuel crée ne me donne pas acces à ce que j'ai besoin.

    j'ai contourné le problème en déplacant mes données dans CAngelApp pour y acceder avec le pointeur que tu m'avais donné. Ca complique un peu mon traitement dans CAngelView mais au moins, j'y ai acces partout.

    Cela dit la solution m'interesse toujours car j'ai besoin de unchecked des controls de la fenetre main alors que je suis ds la dialogue. Le pointeur doit me permettre de faire ca (?)


  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
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    il faut pas faire des choses au hasard lol ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CFrameWnd *pFrame=static_cast<CFrameWnd *>(AfxGetMainWnd())->GetActiveFrame();
     
    CAngelView *pView=static_cast<CAngelView *>pFrame->GetActiveView();

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Re
    il faut pas faire des choses au hasard lol ,
    Quand on s'appelle Farscape, je n'en doute pas !!!!!!!!!!
    Quand on s'appelle gloubi99, tout est bon à tester, en plus de temps en temps on découvre des trucs.

    Pour la soluce, si forcement tu me sors des fonctions que je ne connais (ssait) pas. j'étais pas près de trouver ...une fois de plus !

    Merci encore

  10. #10
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    il faut pas oublier de tester les pointeurs apres les static_cast

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

Discussions similaires

  1. probleme appel de fonction dans une DLL
    Par sylvain.cool dans le forum C++
    Réponses: 12
    Dernier message: 19/06/2008, 17h00
  2. probleme appel de fonction
    Par jeff29 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/08/2006, 20h06
  3. [VB.Net] Problème appel fonction par un bouton
    Par balibo dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/11/2005, 10h48
  4. probleme d'appel de fonction!
    Par transistor49 dans le forum C++
    Réponses: 5
    Dernier message: 11/03/2005, 10h46
  5. Réponses: 8
    Dernier message: 13/08/2004, 12h32

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