Cast et Subclassing

Résolu
Signaler
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
-
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
-
Salut,

Dans une classe C++, je veux subclasser une fenetre :

SetWindowLong(hWnd, GWL_WNDPROC, (LONG)&ExplorerWindow::WindowProc);

Le probleme est qu'il ne peut pas caster la procedure qui se trouve dans ma classe (3e parametre).

Erreur    1    error C2440: 'cast de type' : impossible de convertir de 'LRESULT (__stdcall ExplorerWindow::* )(HWND,UINT,WPARAM,LPARAM)' en 'LONG' 

Comment faire ?

D@runia

6 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
WindowProc doit naturellement être static pour que ca fonctionne (sinon comment on pourrait connaitre la valeur du pointeur this?)

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
2
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
5
Elle est déjè static je penses  (__stdcall), le problème c'est que
ca n'a aucun sens de caster l'adresse dd'une fonction en LONG et le
compilateur l'interdit. Qu'est ce que tu veux faire darunia ?
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
2
Merci a toi vecchio !

Mais comment avoir un WndProc par objet alors ?

D@runia
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Non non, stdcall n'a rien a voir avec static. En API Win32 il est normal de caster une adresse de fonction en LONG (d'ailleurs pour le subclassing on est obligé de le faire)

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
5
Ok, dans ce cas oui elle doit etre static.