2016-07-07 4 views
0

Ich verwende ein Open Source Toolkit (VTK), das ein Objekt mit einer Methode hat, die durch Drücken einer beliebigen Taste ausgelöst wird. Die Idee ist, die Implementierung in Ihrer eigenen Klasse zu überschreiben, aber ich kann nicht herausfinden, wie man es in C++/CLI macht.Einbinden in leere C++ - Implementierung mit C++/CLI-Ereignissen

Das ist was ich habe, aber ich kann nicht herausfinden, wie man es an ein Objekt hakt.

delegate void myEventHandler(vtkObject * sender, EventArgs^e); 
event myEventHandler^ LeftButtonPressEvt; 

LeftButtonPressEvt += gcnew myEventHandler(&MyClass::MyModifiedOnKeyPress); 

void MyModifiedOnKeyPress(vtkObject * sender, EventArgs^e) 
{ 
    //this should be called whenever the button is pressed 
} 

Einhaken an die VTK Objekt würde dies etwas wie folgt aussehen:

vtkObject->OnKeyPress += gcnew myEventHandler(&MyClass::Pick); 

Dieser den Fehler zurückgibt, dass eine Funktion der linke Operand was Sinn macht, aber ich kann nicht herausfinden, wie diese wäre an das Ereignis gebunden.

Antwort

0

Bei nicht statischen Methoden müssen Sie angeben, auf welches Objekt der Delegat verweisen soll.

vtkObject->OnKeyPress += gcnew myEventHandler(this, &MyClass::Pick); 
//           ^^^^ 

(Wenn das das Problem nicht lösen, dann verstehe ich nicht, genau das, was Problem Sie haben. Wenn Sie eine Fehlermeldung, wenn es darum, nicht den Fehler nicht beschreiben, kopieren & einfügen genau was die Fehlermeldung ist.)

+0

Leider gibt es keine Fehlermeldung, so dass dies schwierig zu beschreiben ist. – DumbQuesionGuy314

+0

Vielleicht könnten Sie genauer beschreiben, was vor sich geht. Was versuchen Sie zu tun, was ist Ihr erwartetes Ergebnis, was ist Ihr tatsächliches Ergebnis? –