Cast et Subclassing

Résolu
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 - 10 août 2006 à 13:17
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 - 10 août 2006 à 13:39
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 13:33
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
3
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
10 août 2006 à 13:34
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
10 août 2006 à 13:35
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 ?
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
10 août 2006 à 13:36
Merci a toi vecchio !

Mais comment avoir un WndProc par objet alors ?

D@runia
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 août 2006 à 13:37
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
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
10 août 2006 à 13:39
Ok, dans ce cas oui elle doit etre static.
0
Rejoignez-nous