Bonjour à tous
J'étudie actuellement les tutoriels de loulou sur la création d'un moteur 3D mais il y'a quelque chose que je ne comprend pas dans le code source
CYesApplication.h
CApplication.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ... //---------------------------------------------------------- // Crée la fenêtre Windows //---------------------------------------------------------- void MakeWindow(); //---------------------------------------------------------- // Callback pour la réception des messages de la fenêtre //---------------------------------------------------------- static LRESULT CALLBACK GlobalWindowProc(HWND Hwnd, UINT Message, WPARAM WParam, LPARAM LParam); //---------------------------------------------------------- // Procédure de gestion des messages de la fenêtre //---------------------------------------------------------- LRESULT CALLBACK WindowProc(HWND Hwnd, UINT Message, WPARAM WParam, LPARAM LParam); //---------------------------------------------------------- // Données membres statiques //---------------------------------------------------------- static CYesApplication* s_Application; ///< Pointeur sur l'instance de l'application ...
Pourquoi ici est-on obligé dans la méthode MakeWindow de faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 void CYesApplication::MakeWindow() { // Définition de la classe de la fenêtre WNDCLASSEX WindowClass; ... WindowClass.lpfnWndProc = GlobalWindowProc; ... } LRESULT CALLBACK CYesApplication::GlobalWindowProc(HWND Hwnd, UINT Message, WPARAM WParam, LPARAM LParam) { return s_Application->WindowProc(Hwnd, Message, WParam, LParam); } LRESULT CALLBACK CYesApplication::WindowProc(HWND Hwnd, UINT Message, WPARAM WParam, LPARAM LParam) { switch (Message) { ... } return DefWindowProc(Hwnd, Message, WParam, LParam); }
Et pourquoi ne peut-on pas faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 WindowClass.lpfnWndProc = GlobalWindowProc;
En effet j'ai essayé cette deuxième solution mais VS C++ 2005 me dit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 WindowClass.lpfnWndProc = WindowProc;
Une petite explication ? ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 .\CYildizApplication.cpp(56) : error C3867: &'Yz::CYildizApplication::windowProc' : liste d'arguments manquante dans l'appel de fonction ; utilisez 'Yz::CYildizApplication::windowProc' pour créer un pointeur vers membre 1>.\CYildizApplication.cpp(56) : error C2440: '=' : impossible de convertir de 'LRESULT (__stdcall Yz::CYildizApplication::* )(HWND,UINT,WPARAM,LPARAM)' en 'WNDPROC'
Partager