Erreur du compilateur C3710
'function' : syntaxe incorrecte pour spécifier le gestionnaire d’événements dans __hook/__unhook
Lorsque vous spécifiez un gestionnaire d’événements avec __hook ou __unhook, le gestionnaire doit être une méthode valide.
Exemple
L’exemple suivant génère l’erreur C3710
// C3710.cpp
// compile with: /link /opt:noref
#include <atlbase.h>
#include <atlcom.h>
#include <atlctl.h>
#include <stdio.h>
[event_source(native)]
class CEventSrc
{
public:
__event void event1();
};
[event_receiver(native)]
class CEventRec
{
public:
void handler1()
{
printf_s("Executing handler1().\n");
}
void HookEvents(CEventSrc* pSrc)
{
__hook(&CEventSrc::event1, pSrc, 0); // C3710
// try the following line instead
// __hook(&CEventSrc::event1, pSrc, &CEventRec::handler1);
}
void UnhookEvents(CEventSrc* pSrc)
{
__unhook(&CEventSrc::event1, pSrc, &CEventRec::handler1);
}
};
int main()
{
CEventSrc eventSrc;
CEventRec eventRec;
eventRec.HookEvents(&eventSrc);
eventSrc.event1();
eventRec.UnhookEvents(&eventSrc);
}