PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ .NET BUTTON MouseListener


blax
2006-12-09, 19:49:22
Hi,
folgendes Problem...

this->button1->Click += new System::EventHandler(this, button1_Click);
Die Zeile funktioniert noch. Jetzt wollte ich, wenn man die Maus über den Button bewegt auch eine funktion aufrufen.

Diese Zeile hab ich im Internet in der MSDN-Library gefunden:
this->button1->MouseMove += gcnew System::Windows::Forms::MouseEventHandler( this, &Form1::button1_Click );

gcnew = "nichtdeklarierter Bezeichner"
Ich hab irgendwie das gefühl ich mach da was Grundlegendes falsch, weil die Events für Click und MouseMove so komplett verschieden aussehen :(

könnt ihr mir damit helfen..., bitte,

lg sevi

Gast
2006-12-09, 20:26:50
Du verwechselst "C++/CLI" Code mit "Managed C++" Code.

Ersetze gcnew durch new und mach hinten die Referenz weg.


Falls du noch nicht viel damit gemacht hast, würde ich dir dringend empfehlen auf CLI umzusteigen. Managed C++ ist nur der in vielen Punkten missglückte Vorgänger.

SamStone
2006-12-09, 21:21:14
Warum machst du bei der Pointer zuweisung immer ein "+=" und nicht einfach "="?
Habe sowas in der Art schon öfters gesehen, aber weiß nicht was das bringen soll :confused:

tokugawa
2006-12-09, 21:43:09
Du verwechselst "C++/CLI" Code mit "Managed C++" Code.

Ersetze gcnew durch new und mach hinten die Referenz weg.


Falls du noch nicht viel damit gemacht hast, würde ich dir dringend empfehlen auf CLI umzusteigen. Managed C++ ist nur der in vielen Punkten missglückte Vorgänger.

Da stimm ich dir zu, obwohl bei Managed C++ das Kombinieren von nativen static libraries meiner Erfahrung nach problemloser funktioniert als mit C++/CLI (das ja bei CLI Apps z.B. die "DLL"-Runtimes forciert). "It just works" gilt also für C++/CLI nur mehr bedingt...

Warum machst du bei der Pointer zuweisung immer ein "+=" und nicht einfach "="?
Habe sowas in der Art schon öfters gesehen, aber weiß nicht was das bringen soll :confused:

+= ist bei .NET korrekt, da man soweit ich weiß hier in die Liste der Eventhandler einen neuen Handler "hinzufügt". Es ist ja nicht wirklich eine "Pointer-Zuweisung".

blax
2006-12-10, 11:50:16
hm..danke soweit,
aber es funktioniert noch immer nicht :(

this->button1->MouseMove += new System::Windows::Forms::MouseEventHandler( this, button1_MouseOver );

Fehler:
gui_net error C3352: 'void gui_net::Form1::button1_MouseOver(System::Object __gc *,System::EventArgs __gc *)': Die angegebene Funktion stimmt nicht mit dem Delegattyp 'void (System::Object __gc *,System::Windows::Forms::MouseEventArgs __gc *)' überein

muss da die Funktion button1_MouseOver einen bestimmten Typ habe?

lg Sevi

blax
2006-12-10, 11:57:53
ahh...alles klar
tut mir leid, dass ich so voreeilig gefragt hab

Lösung:
Ich hab den Funktionskopf der Funktion button1_MouseOver
private: System::Void button1_MouseOver(System::Object *sender, System::EventArgs *e)
geändert auf
private: System::Void button1_MouseOver(System::Object *sender, System::Windows::Forms::MouseEventArgs *e)

jetz funktionierts :)

danke,
lg Sevi

blax
2006-12-10, 13:16:47
ahhhahah...ich bin so aufgeschmissen mit der Umgebung :(

ich hab jetzt mit Visual C++ eine neue, zusätzliche FORM erzeugt...

wie kann ich die jetzt anzeigen bzw. überhaupt ansprechen?

lg sevi

blax
2006-12-10, 13:27:21
ach..war wieder zu voreilig...
habs schon
tut leid..aber ich war so verzweifelt,
lg sevi