Normal car lorsque tu cree une fenetre, tu utilises la fonction
RegisterWindowEx qui prend comme parametre un pointeur sur une structure de type WNDCLASS, et dans cette structure tu passes le pointeur sur la fonction CALLBACK qui va intercepter les messages de la fenetre.
Cette fonction est de ce type :
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
Or si tu as une fonction equivalente dans une classe elle sera de ce type :
LRESULT CMyClass::WndProc(HWND , UINT ,WPARAM , LPARAM );
Ce qui n'est pas du tout la meme chose.
Tu es donc obligé d'utiliser une fonction globale pour gérer les messages windows.