Angenommen, ich habe ein COM-Objekt, auf das Benutzer über einen Anruf zugreifen können, z. B .:
%Vor%Was ich gerne tun könnte, ist, dass der Benutzer einen Event-Handler für das Objekt angeben kann:
%Vor%Ist das möglich, und wenn ja, wie gebe ich das in meiner Typbibliothek in C ++ (speziell BCB 2007) frei?
So habe ich es kürzlich gemacht. Fügen Sie eine Schnittstelle hinzu, die IDispatch und eine Co-Klasse für diese Schnittstelle zu Ihrer IDL implementiert:
%Vor%Dies ist die Deklaration der CServerEvents-Klasse:
%Vor%Der Schlüssel hier ist die Implementierung der IConnectionPointImpl- und IConnectionPointContainerImpl-Schnittstellen und der Verbindungspunktzuordnung. Die Definition der OnServerEvent-Methode sieht folgendermaßen aus:
%Vor%Sie müssen Ihrem Client eine Möglichkeit geben, seinen Handler für Ihre Ereignisse anzugeben. Sie können dies mit einer dedizierten Methode wie "SetHandler" oder etwas tun, aber ich bevorzuge es, den Handler zu einem Argument für die Methode zu machen, die asynchron aufgerufen wird. Auf diese Weise muss der Benutzer nur eine Methode aufrufen:
%Vor%Speichern Sie den Zeiger zu den IServerEvents und rufen Sie dann die Methode auf, wenn Sie Ihr Ereignis auslösen möchten:
%Vor%Wie beim VB-Code unterscheidet sich die Syntax für den Umgang mit Ereignissen etwas von dem, was Sie vorgeschlagen haben:
%Vor%Ich hoffe, das hilft.
Tags und Links events com vbscript c++builder