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 :

String pointant sur un nom de Fonction.


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 37
    Points
    37
    Par défaut String pointant sur un nom de Fonction.
    Voila jai un problème simple. Jessaye de faire une list contenant des strings :
    MonItem1
    MonItem2
    MonItem3

    et j'ai 3 fonctions :::
    bool MonItem1(void);
    bool MonItem2(void);
    bool MonItem3(void);


    mais je veut que lorsque le client double click sur un item de ma liste, le gestionnaire devenement determine que la String selectionner cest MonItem1 et quil appelle la fonction MonItem1().

    Le concept est simple mais je ne sais pas si c'est possible.

    IMPORTANT... LE NOM DE LA FONCTION A EXACTEMENT LE MÊME NOM QUE LA VALEUR DU STRING DANS LA LISTE. même casse, même orthographe...

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Ceci suppose que la Reflection existe en C++, or même en VC++ il ne me semble pas que ça existe, pour récupérer un pointeur de fonction : &MaFonction

    pour les sotcker il faut untypedef, exemple :
    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
    #include <list>
    using namespace std;
     
    bool MonItem1(void);
    bool MonItem2(void);
    bool MonItem3(void);
     
    typedef bool (*bool_func)(void);
     
    list<bool_func> List;
     
    //pas sûr que ce soit push_back
    List.push_back(&MonItem1);
    List.push_back(&MonItem2);
    List.push_back(&MonItem3);
    si tu veux les associer a des string, tu peux toujours utiliser des map :


    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
    #include <map>
    #include <string>
    using namespace std;
     
    bool MonItem1(void);
    bool MonItem2(void);
    bool MonItem3(void);
     
    typedef bool (*bool_func)(void);
     
    map<string, bool_func> Tab;
     
    Tab["MonItem1"] = &MonItem1;
    Tab["MonItem2"] = &MonItem2;
    Tab["MonItem3"] = &MonItem3;

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    Wow, à première vue sa semble être ce que je cherche, mais tu peut détailler un peu ce que fais la première solution, comment elle agit, pcq je suis pas sur de bien comprendre le :
    typedef bool (*bool_func)(void);

    list<bool_func> List;

  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
    salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef bool (*bool_func)(void);
    ça definit un type de pointeur de fonction .
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    list<bool_func> List;
    permet d'avoir une liste sur des pointeurs de fonctions.
    note: dans le cas d'une classe les fonctions devront etre static...

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Citation Envoyé par farscape
    note: dans le cas d'une classe les fonctions devront etre static...
    ou alors faut s'embarquer sur les pointeurs de fonctions membres, mais dans ce cas, c'est uniquement les fonctions membres d'UNE classe précise

Discussions similaires

  1. Renseignement sur le nom des fonctions
    Par hbx360 dans le forum C
    Réponses: 13
    Dernier message: 11/03/2015, 16h05
  2. Lien Hypertexte pointant sur une fonction Javascript
    Par Delphi-ne dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/07/2007, 16h00
  3. Réponses: 10
    Dernier message: 18/03/2007, 04h55
  4. test sur le nom d'une fonction
    Par Art19 dans le forum C
    Réponses: 6
    Dernier message: 26/06/2006, 18h29
  5. Réponses: 2
    Dernier message: 04/10/2005, 15h13

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