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 :

Probleme avec la declaration de LRESULT CALLBACK WndProc


Sujet :

MFC

  1. #1
    Membre �clair�
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    D�tails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par d�faut Probleme avec la declaration de LRESULT CALLBACK WndProc
    Bonjour,

    Dans un de mes programmes (OpenGL) que j'ai recupere sur le net, il est fait un truc comme ca :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Declaration de la fonction WndProc
    LRESULT	CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
     
    BOOL CreateGLWindow(char *title, int width, int height, int bits)
    {
      WNDCLASS wc;
      wc.lpfnWndProc = (WNDPROC) WndProc;
      ...
    }
    Et cela fonctionne.

    Mais je veux mettre tout cela dans une classe:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    BOOL CGLView::CreateGLWindow(char *title, int width, int height, int bits)
    {
      WNDCLASS wc;
      wc.lpfnWndProc = (WNDPROC)  CGLView::WndProc;
      ...
    }
    Et ca il aime pas du tout :

    error C2440: 'type cast' : cannot convert from '' to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
    None of the functions with this name in scope match the target type
    Comment dois-je declarer ce truc ?????

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    essaie de d�clarer la callback en static

  3. #3
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Salut

    Il y a la r�ponse � ta question dans la FAQ C++ (lorsque le probl�me de serveur sera r�gl� ), qui explique notamment la diff�rence (et l'incompatibilit�) entre pointeur sur fonction globale/statique et pointeur sur fonction membre.

  4. #4
    Membre �clair�
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    D�tails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par d�faut
    Citation Envoy� par nico-pyright(c)
    essaie de d�clarer la callback en static
    Cela marche parfaitement, mais le probleme, c'est que si je fais cela je ne peux plus acceder aux membres de ma classe car sinon cela me met :

    illegal reference to data member 'CGLView::active' in a static member function
    Sinon Loulou24, je n'ai pas trouve dans la FAQ C++.... si tu as le lien

  5. #5
    Membre �clair�
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    D�tails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Par d�faut
    Une autre solution serait de ne pas mettre dans la classe ma CALLBACK, mais dans ce cas la elle n'aura plus acces aux membres de la classe et ca c'est tres genant

  6. #6
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Sinon Loulou24, je n'ai pas trouve dans la FAQ C++.... si tu as le lien
    Oups elle n'est pas encore sortie . Elle sera incluse � la prochaine version, d�sol�.

    Le type des fonctions membres et des fonctions globales/statiques n'est pas le m�me, ce qui explique que ta fonction n'en veuille pas. Pourquoi une diff�rence ? Et bien parce que pour appeler une fonction membre il faut une instance de la classe, tout simplement. Donc tu n'as pas le choix, met la en static. Ensuite comme en g�n�ral la classe qui g�re les �v�nements de la fen�tre est un singleton, tu peux facilement dans ton callback static d�l�guer le boulot � une fonction membre.
    J'avais donn� le code corespondant � la solution de ce probl�me, dans un autre sujet, si le d�lestage n'est pas pass� par l� tu devrais la retrouver.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 23/02/2010, 14h16
  2. R�ponses: 2
    Dernier message: 20/07/2007, 11h21
  3. R�ponses: 8
    Dernier message: 01/06/2007, 00h13
  4. Probleme avec les callback glutess!
    Par jojomillenium dans le forum OpenGL
    R�ponses: 4
    Dernier message: 07/11/2006, 19h24
  5. R�ponses: 1
    Dernier message: 12/06/2006, 19h02

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