Ich schreibe einen DLL-Wrapper zu einer C++ Builder VCL-Klasse. Dies ist ein äußerst vereinfachtes Beispiel des Problems:Verwenden Sie ein Nicht-Klassenmitglied als Ereignishandler
typedef void __fastcall (__closure *TMyEvent)(int index);
class TMyClass {
public:
TMyEvent OnMyEvent;
};
void __fastcall myEventHandler(int index) { }
TMyClass myClass;
myClass.OnMyEvent = myEventHandler;
... und hier ist das Problem: Normalerweise myEventHandler
innerhalb einer anderen Klasse definiert ist, aber hier ist es als eine globale Funktion definiert. Wenn ich versuche, myEventHandler
zuweisen zu myClass.OnMyEvent
ich „Can not void (int) zu TMyEvent konvertieren“
ich die TMyClass Wiederverwendung andere Art von Wrapper zu generieren und müssen die __closeure
im typedef
so funktioniert es gut mit VCL-Formular-Projekten.
Ist das das Problem (__closure
)? Kann ich eine globale Funktion überhaupt als Event-Handler verwenden?
Ich werde es ausprobieren, sobald ich zurück bin ... –