Bonjour !
Je developpe une petite appli sous windows, sans utiliser les MFC.
Je souhaite ouvrir une fenetre du type pop-up pour y mettre des outils de l'application (genre comme les palettes flottantes de photoshop)
Pour ce faire, je declaire une window class :
Code :
- maWindowClass.style = 0;
- maWindowClass.lpfnWndProc = maFonction;
- maWindowClass.cbClsExtra = 0;
- maWindowClass.cbWndExtra = 0;
- maWindowClass.hInstance = parentHINSTANCE;
- maWindowClass.hIcon = NULL;
- maWindowClass.hCursor = NULL;
- maWindowClass.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
- maWindowClass.lpszMenuName = NULL;
- maWindowClass.lpszClassName = "Ma fenetre";
|
Puis j'ouvre ma fenetre avec createWindow()
Ma fenetre est ouverte par une fonction contenue dans une classe, qui contient dans ses données les infos sur la fenetre, du style :
Code :
- maClasse
- {
- pleinsDeFonctionsEtDeVariables
- WNDCLASS maWindowClass;
- HWND maWindowHWND;
- }
|
Je souhaiterais maintenant que la fonction "maFonction" fasse partie de la classe, et c'est là que ca coince !
Si je declare un truc du genre :
Code :
- maClasse
- {
- pleinsDeFonctionsEtDeVariables
- WNDCLASS maWindowClass;
- HWND maWindowHWND;
- LRESULT CALLBACK maFonction(HWND, UINT, WPARAM, LPARAM);
- }
|
J'obtiens ces 2 erreurs :
Code :
- error C3867: &'maClasse::maFonction' : liste d'arguments manquante dans l'appel de fonction ; utilisez 'maClasse::maFonction' pour créer un pointeur vers membre
- error C2440: '=' : impossible de convertir de 'LRESULT (__stdcall maClasse::* )(HWND,UINT,WPARAM,LPARAM)' en 'WNDPROC'
|
Pourquoi ? Comment ? Je ne vois pas le rapport !
J'ai essayé avec differentes notations, pointeurs.... imposssible de donner l'adresse d'une fonction membre de la classe à ce parametre : maWindowClass.lpfnWndProc
Y'a-t-il une raison precise ? Ou je m'y prend mal ?
PS : je peux m'en passer, mais j'aimerais regrouper toutes les fonctions utiles à un objet dans sa classe, histoire que ce soit plus propre...