begin process at 2012 05 30 23:05:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

void Static Virtual CALLBACK ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

void Static Virtual CALLBACK ?

dimanche 4 septembre 2005 à 18:51:46 | void Static Virtual CALLBACK ?

anarchysniper

Je dois créer une classe Timer avec sorte de gestion évènementielle à la manière des "events" des classes .NET. Mais comme ces "events" doivent être modifiables par l'utilisateur, il me faut des fonctions virtual. Cependant, comme les "events" sont provoqués par des fonctions statiques destinées au CALLBACK de Windows ... appeler une fonction virtual à partir d'une statique ça a pas trop l'air de lui plaire à GCC. Alors comment déclencher une fonction virtual redéfinissable à partir d'une statique ? Je sèche ...

Une idée ?
dimanche 4 septembre 2005 à 19:04:29 | Re : void Static Virtual CALLBACK ?

mezaya

Pourquoi tu n'utilise pas plutot des pointeurs de fonctions tu peux appellé ainsi une fonctions crée par l'utilisateur ( comme le WinProc )

Voili,Voilou
dimanche 4 septembre 2005 à 20:52:31 | Re : void Static Virtual CALLBACK ?

anarchysniper

Le but est que l'utilisateur puisse personnaliser un évènement en rédefinissant une seule fonction. Cela remplirait cette exigence ? Je ne vois pas tellement comment tu veux procéder avec des pointeurs de fonctions.
dimanche 4 septembre 2005 à 20:58:35 | Re : void Static Virtual CALLBACK ?

anarchysniper

class Timer
{
    public :

        void Start (UINT) ;
        
        void Destroy () ;

        void static TimerProc (HWND, UINT, UINT, DWORD) ;

        void virtual Top () ;

    private :

        UINT_PTR TimerID ;
} ;

Voila par exemple pour le Timer. Quand TimerProc essaye d'appeler Top () :
cannot call member function `virtual void Timer::Top()' without object
dimanche 4 septembre 2005 à 21:39:28 | Re : void Static Virtual CALLBACK ?

mezaya

le pointeur de fonction se définie comme ça void(*fonction)(void).

l'utilisateur peut alors passer le pointeur d'une fonction qu'il a créer.
ex : MaFonction() créer par l'utilisateur pour le passer au pointeur de fonction :
        fonction = MaFonction;

Puis dans une méthode (par ex ) on apelle la fonction définie l'utilisateur :

if( fonction != NULL )
      fonction();  // ici la fonction appelé est en faite MaFonction() définie par l'utilisateur.

Voili,Voilou
dimanche 4 septembre 2005 à 21:43:55 | Re : void Static Virtual CALLBACK ?

mezaya

dans ton exemple :

lass Timer
{
    public :
        void Start (UINT) ;
        void Destroy () ;
        void static TimerProc (HWND, UINT, UINT, DWORD) ;
        void Top () ;
        void DéfinirFonction( void (*fonct)( void) );

    private :
        UINT_PTR TimerID ;
        void (*fonction)(void);
} ;

void DéfinirFonction( void (*fonct( void) )
{
  fonction = fonct;
}

void Top()
{
 if( fonction != NULL )
     fonction();
}



utilisation dans le main :

void Mafonction()
{
...
}

int main()
{
Timer T;

T.DefinirFonction( MaFonction );

T.Top(); // ici la fonction top va appellé la fonction MaFonction().
}

Voili,Voilou
dimanche 4 septembre 2005 à 21:46:37 | Re : void Static Virtual CALLBACK ?

mezaya

erreur de syntaxe c'est :
       void Timer::DéfinirFonction( void (*fonct)( void) )
et
     void Timer::Top()

Voili,Voilou


Cette discussion est classée dans : static, void, events, callback, virtual


Répondre à ce message

Sujets en rapport avec ce message

CALLBACK dans une Classe => problême mot clef static ! [ par Capa6T ] Salut, Une petite question à 2 euros...je cherche depuis un moment et je ne trouve pas la solution. j'ai une classe bidon:// Bidon.hclass Bidon{public pb avec des jetons et des symboles externes non résolus [ par 3xodiuS ] Bonjour à tous,J'essaie de réaliser un processus qui me permettrait de cacher la barre des tâches de XP pro, n'ayant pas trouvé de méthode propres et pointeur static sur fonction :) [ par luhtor ] Certain reconnaitront surement le tutoriel en question. J'ai rajouté quelques trucs au gestionnaire d'exception, mais je bloque sur le point suivant:J truc interessant pour les debutants [ par foxz ] ma question : est-ce portable ?ya t-il une autre solution ?non je ne demanderais pas si c safe thread :-))) (a priori ca l'est)class A{   int hidden;  multi heritage [ par foxz ] Bonjour,d'une maniere general.class strm{ // base stream virtual int w(void*,int)=0; // write virtual int r(void*,int)=0; //read};class fil:virtual pu Problème de classe non static [ par Terminator59140 ] Bonjour tous le monde! J'ai un problème un peu énervant si je eut me permette. J'utilise Visual Studio 2008 et je créer un projet en c++. Le porjet es MFC, thread, callback, etc... La totale ! [ par SW_87 ] Bonjour , Je reprends mon problème car apparemment je me suis mal exprimé . J'ai créé une application "MFC AppWizzard (exe)" sous VC++ 6.0. que je n Erreur de compilation ... [ par Tidam ] RE bijour a tous ! Voila quand je compil sous linux ma source, j'obtient les erreurs suivante : main.cpp:239: void value not ignored as it ought to be STATIC, SetWindowText et icone[Dev-C++] [ par mastermatt29 ] Salut tout le monde !! Il se trouve que j'ai un problème avec mon code ! Premierement j'ai un static, déclaré avec CreateWindowEx(...). Je lui ai don


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales