Forms - bei klick auf Button Funktion aufrufen
-
Hallo, ich hoffe, meine Frage ist hier richtig, ich mache gerade meine ersten Schritte mit C++ (oder wenn ich den sticky Beitrag hier oben richtig verstehe NICHT mit C++ sondern mit C++/CLI ?! )
Ich habe mir das VS 2008 über das MSDNAA Programm geholt und installiert.
Mittlerweile habe ich ein paar Tutorials usw. durchgelesen und spiele mit dem Programm ein bisschen herum.Ich kann schon den Text eines textfeldes durch klick auf einen Button ändern
Nun habe ich folgendes versucht:
// Forms_test_001.cpp: Hauptprojektdatei. #include "stdafx.h" #include "Form1.h" using namespace Forms_test_001; [STAThreadAttribute] int testFunktion() { return 3; } int main(array<System::String ^> ^args) { // Aktivieren visueller Effekte von Windows XP, bevor Steuerelemente erstellt werden Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); // Hauptfenster erstellen und ausführen Application::Run(gcnew Form1()); return 0; }
Dann mache ich den Doppelklick auf meinen Button und komme in den onClickEvent. Hier würde ich jetzt gerne mit this->textBox1->Text = test.ToString(); den Wert 3 in ein textfeld schreiben.
. . . private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { int test; test = testFunktion(); this->textBox1->Text = test.ToString(); } };
Allerdings bekomme ich beim kompilieren den Fehler, dass meine testFunktion nicht gefunden wird. Sicher nur ein kleiner Fehler, aber ich komme nicht drauf
Danke schonmal für Eure Hilfe !
P.S.: ist das denn nun C++/CLI, also kein "richtiges" C++ ?
-
Mein Tipp: Lern C++ und kauf dir ein Buch. Oder
Lern C#Computer und Compiler sind doof, die können nix, woher soll die Form-Datei(Cpp.File?) wissen, wo er nach der Testfunktion suchen soll und wehe du includierst nun die Cpp-Datei
-
Hmmmm, das versteh ich nicht so richtig...
Ok, ich verstehe, was Du meinst, aber ich dachte es geht so:
in der cpp Datei steht die Funktion. Die cpp Datei includiert ja auch die Forms, also ist nacher alles "in einer Datei".
Das Forms wird ja auch in der cpp Datei aufgerufen...Wie würde man das ganze denn korrekt lösen ?
Die Forms.h erst nach der Funktion includieren? Oder eine zusätzliche Datei erstellen, in die dann meine Funktion kommt und die dann in der Forms.h includieren?Aber zumindest verstehe ich jetzt, was da schief läuft, verstehe zwar nicht so ganz, warum der compiler das nicht "ausbügelt" aber ok, wird wohl einfach eine Regel sein.
Wäre nett, wenn mir jetzt einer sagt, wie man damit umgeht.Achja, ich hab mir extra ne Lern DVD gekauft, und natürlich wird da gezeigt, wann Variablen sichtbar sind usw. aber dass das mit den Funktionen auch so ist wurde da nicht gesagt, und dann hatte ich da eben den Denkfehler *schäm
Aber danke auf jeden Fall für die Hilfe (zu so später Stunde )
-
hi,
Hier würde ich jetzt gerne ..... den Wert 3 in ein textfeld schreiben.
geht mit
. . . private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { this->textBox1->Text = "3"; } };
aber vll hilft Dir das etwas weiter
#pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { if (textBox1->Text !=String::Empty) { String ^temp = textBox2->Text; textBox2->Text=textBox1->Text; textBox1->Text = temp; } else MessageBox::Show("es sind keine Daten in Box 1 vorhanden","Fehler"); } private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { textBox2->Text="kopieren"; } }; }
Du solltest aber den Rat von @Zeus ernst nehmen
Mein Tipp: Lern C++ und kauf dir ein Buch. Oder
Lern C#Computer und Compiler sind doof, die können nix, woher soll die Form-Datei(Cpp.File?) wissen, wo er nach der Testfunktion suchen soll und wehe du includierst nun die Cpp-Datei
mfg
-
Naja, das mit dem Lernen ist mir schon klar...
Ich hab mir aus der Uni-Bib eine LernDVD (ob ein Buch so viel besser gewesen wäre...) geholt.
Und da wird schon nach wenigen Stunden eine CLR Anwendung gemacht.
Ich schäte mal, einfach, damit man das schonmal gesehen hat.
Da kommt dann auch sehr schnell wie man beim Klick auf nen Button in einem Textfeld Text ausgeben kann.
Das hat auch geklappt (this->textBox1->Text = "3";)
Nächstes Kapitel waren dann aber eben Funktionen und Prozeduren. Erstmal wieder in einer Konsolenanwendung. Das hab ich gemacht (und eigentlich auch verstanden) und dann hab ich "in Eigeninitiative" versucht, das ganze in einer CLR Anwendung zu machen und kam eben auf die Probleme.Aber jetzt weiss ich ja, an was es lag.
Hab mir überlegt, eine eigene Datei zu machen, in der ich dann meine eigenen Funktionen schreibe, die include ich ziemlic am Anfang, dann sollte das doch kein Problem mehr geben, oder ?
Oder ist das ein "no-go"?Danke nochmal
-
Ah, mist, was vergessen:
der Tipp wegen C# - ist das denn "besser" als C++ ? Oder warum sollte ich lieber das anschauen?
-
RuedigerCLR schrieb:
der Tipp wegen C# - ist das denn "besser" als C++ ?
ob es besser ist - keiner weis es ... außerdem ist hier C++/CLI - da sollte man wirklich nur verwenden wennman via C# auf die Windows-API zugreifen will ... unter Ankündigungen sollte da etwas von Jochen stehen
Oder warum sollte ich lieber das anschauen?
weil Du nur ein allg. C/C++ Verständniss-Problem hast was include angeht ... Dir fehlen grundlegende Grundlagen
-
Jetzt will ich dir mal den Rightway zeigen, übrigends würdest du es wissen, falls du C++ lernst
// My.h #pragma once namespace dummy_clr { using namespace System; System::Int32^ MyFunc(); }
// My.cpp #include "stdafx.h" #include "my.h" System::Int32^ dummy_clr::MyFunc() { return 3; }
// Form1.h #pragma once #include "my.h" namespace dummy_clr { using namespace System; // ... // Form.h Eventhandler private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { button1->Text = MyFunc()->ToString(); } };
Und das mit VS2010 ohne IntelliSense
-
RuedigerCLR schrieb:
Ah, mist, was vergessen:
der Tipp wegen C# - ist das denn "besser" als C++ ? Oder warum sollte ich lieber das anschauen?http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html
-
Hmmm, dann ist die DVD vielleicht doch nicht der richtige Einstieg...
Oder ich hab nur zu schnell einfach irgendwelche Dinge übersprungen.
Ich werd die Übungen jetzt mal noch durch machen, mal schauen, ich hoffe mal, ich lerne nix "falsches" und mir dann ein Einsteigerbuch suchen, bzw. mich umschauen, was so für den Einstieg empfohlen wird.Vielen Dank auf jeden Fall!
-
Wen du die DVD meinst wovon sprechst du?
-
Bei uns in der Uni-Bib gab es eine LernDVD, "Visual C++ - Einstig für Anspruchsvolle" heisst die und ist von "video2brain".
Die hab ich mir geholt und angefangen durchzuarbeiten.
Hatte nen ganz guten Eindruck gemacht, aber vielleicht ist es wirklich nicht so sinnvoll, so früh mit CLI Anwendungen anzufangen.
Schon im 3. Kapitel wird damit ein Würfel gebastelt, das ist ein Kapitel vor Funktionen und Prozeduren, vielleicht hat mich das einfach zu schnell zu weit geführt (oder ich war zu ungeduldig )
Aber wie gesagt, ich mach das jetzt noch fertig und schau mich dann nach einem Buch, oder einer anderen DVD oder sonstwas um (Empfehlungen?)