Problème Win32 Api

Signaler
Messages postés
16
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
31 mars 2007
-
Messages postés
16
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
31 mars 2007
-
J'ai Visual C++ 6 Introductory Edition et j'ai programmé une classe censée représenter une fenetre mais quand dans le constructeur de la classe j'ecrit :

| WNDCLASSEX wc;
|
| (...)
|
| wc.lpfnWndProc = WndProc;

où WndProc est en fait :

LRESULT CALLBACK MyWindow::WndProc(HWND, UINT, WPARAM, LPARAM);

le compilateur m'insulte en me disant :

cannot convert from 'long (__stdcall MyWindow::*)(struct HWND__ *,unsigned int,long,unsigned int)' to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'

Si il y a quelqu'un qui comprend pourquoi et peut etre sait comment y remedier je serais sauvé (g pas envie d'utiliser les mfc ni tout autre forme de bibliothèque de ce genre meme mieux programmé, g juste besoin d'un petite classe gerant la fenetre)

4 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
la premiere solution est de mettre

LRESULT CALLBACK MyWindow::WndProc(HWND, UINT, WPARAM, LPARAM);

en static, mais sinon ya une autre solution (poster dans le forum)
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
si la WndProc est dans une classe, elle doit être déclarée static. Si dans cette WndProc tu as besoin d'accéder aux membres non statiques, voici la mémthode :

- lors de la création de la fenêtre, mettre un pointeur sur l'objet MyWindow en dernier param de CreateWindow.
- dans la WndProc, lors de la réception de WM_CREATE ou WM_NCCREATE, récupérer ce pointeur par l'intermédiare de la structure CREATESTRUCT pointée par lParam.
- associer ce pointeur à la fenêtre par SetWindowLong() et GWL_USERDATA.
- pour les autres messages, récupérer ce pointeur.

dans mes sources, le programme "Un petir Paint en Win32" utilise cette technique.
Messages postés
16
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
31 mars 2007

Merci pour ces réponses.