編譯器錯誤 C3710
'function':在 __hook/__unhook 中指定事件處理常式時使用了不適當的語法
當您使用 __hook 或 __unhook 指定事件處理程式時,處理程式必須是有效的方法。
範例
下列範例會產生 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);
}