Voila du code qui passait sous Visual C++ 6 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
ON_MESSAGE(UM_RESULTAT_REQUETE,OnResultatExecutionRequete)
...
LRESULT PWH_CClientApp::OnResultatExecutionRequete(WPARAM wParam, LPARAM lParam) {
...
}
Malheureusement sous Visual C++ 8 (2005) à la compilation ça ne passe plus et ça donne ce message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
error C2440: 'static_cast' : impossible de convertir de 'LRESULT (__thiscall PWH_CClientApp::* )(WPARAM,LPARAM)' en 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
Aucune fonction ayant ce nom dans la portée ne correspond au type de la cible
La classe PWH_CClientApp dérive de CWinApp. A mon avis le problème vient de là non ?

Y'aurait-il une autre macro qui permette d'intercepter les message sans être forcée d'utiliser des méthode dérivant de CWnd ?

parce que ON_MESSAGE sous Visual C++ 8 fait un static_cast :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
define ON_MESSAGE(message, memberFxn) \
	{ message, 0, 0, 0, AfxSig_lwl, \
		(AFX_PMSG)(AFX_PMSGW) \
		(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM) > \
		(memberFxn)) }
Merci d'avance pour votre aide.