Also wenn du es in Delphi mit
stdcall
deklariert hast, musst du das in C++ auf jeden Fall schonmal auch verwenden. Auch beim Typedef!
Jetzt ist die Frage:
Wird das Event wirklich nicht ausgelöst, oder stimmt nur der "Event Code" nicht? Lass mal eine MessageBox
vor der Auswertung von
event
anzeigen.
Enums in C++ sind standardmäßig 4-Bytes groß, während sie bei Delphi dynamisch skalieren.
Du kannst jetzt entweder in Delphi das Enum per Compiler-Switch auf 4-Bytes vergrößern (oder als letztes Element ein
FORCE_DWORD = MAXINT
hinzufügen), oder du verkleinerst die Enum-Größe entsprechend im C++ Code. Hier würde ich dir generell zu typisierten Enums raten (Delphi Enums sind auch typesafe):
Code:
enum class PlayerEvent : std::uint8_t // #include <cstdint>
{
PlayEnded,
ErrorEnded
};
Statt
uint8_t
sind je nach Anzahl der Elemente dann auch andere Typen wie z.b.
uint16_t
, etc. Möglich.
Deine Abfrage sieht mit typisierten Enums dann so aus:
Code:
void _stdcall OnPlayerEvent(TPlayerEvent event)
{
if (event == PlayerEvent::PlayEnded)
{
KillTimer(MovieHandle, MOVIE_TIMER);
}
}