Kompilatorfel C3714

"metod": en händelsehanterarmetod måste ha samma anropskonvention som källans "metod"

Anmärkningar

Du har definierat en händelsehanterarmetod som inte använde samma anropskonvention som källhändelsemetoden. Åtgärda det här felet genom att ge händelsehanterarmetoden samma anropskonventioner som för källhändelsemetoden. I koden nedan, se till att anropskonventionerna av handler1 och event1 matcha (__cdecl eller __stdcall eller andra). Om du tar bort nyckelorden för anropskonventionen från båda deklarationerna, löser du också problemet och ställer in event1 och handler1 till thiscall anropskonventionen som standard. För mer information, se Samtalskonventioner.

Example

I följande exempel genereras C3714:

// C3714.cpp
// compile with: /c
// processor: x86
[event_source(native)]
class CEventSrc {
public:
   __event void __cdecl event1();
   // try the following line instead
   // __event void __stdcall event1();
};

[event_receiver(native)]
class CEventRec {
public:
   void __stdcall handler1() {}

   void HookEvents(CEventSrc* pSrc) {
      __hook(&CEventSrc::event1, pSrc, &CEventRec::handler1);   // C3714
   }

   void UnhookEvents(CEventSrc* pSrc) {
      __unhook(&CEventSrc::event1, pSrc, &CEventRec::handler1); // C3714
   }
};