Hi, ich fuchse mich gerade in Visual C++ Express 2005 rein und habe es auch schon geschafft ein Fenster mit Schaltflächen zu Erstellen und beim Klick auf Buttons etc. Aktionen auszulösen (z.B. Message-Boxes). Aber an so einfachen Dingen wie einen Text in einem Fenster auszugeben scheitere ich. In Konsolenanwendungen gibt es dafür ja printf. Bei Studio passiert aber nichts, wenn ich den Befehl benutze. Fehlt da noch ein Hinweis, WO der Text ausgegeben werden soll? Ich habe z.B. eine Textbox erstellt, aber wie bekomme ich da jetzt einen variablen Text hinein? Also nicht vorher initialisieren, sondern zur Laufzeit bei einem Ereignis (z.B. OnClick) den Text dort erscheinen lassen... In der Hilfe werde ich mit allem möglichen Erschlagen, nur das gewünschte - einfache Beispiel - finde ich nicht. Dann suche ich noch eine einfache Dropdownbox. Scheinbar finde ich die nicht. Ich sehe in der Toolbox nur Listbox und Combobox. Muss man die Combobox per Parameter zur Dropdownbox degradieren? Ich möchte nicht, dass die Möglichkeit besteht, selbst etwas einzugeben. Es soll lediglich ein Dropdownfeld geöffnet werden, wie man es aus vielen vielen Anwendungen kennt. Und gibt es eine gute und einfache Einführung in das Programm? Ich meine damit etwas Praxisbezogenes, dass sich auf die grundlegenden Bedürfnisse von Anfängern der GUI-Programmierung bezieht, so wie ich sie hier gerade mit einigen Beispielen beschrieben habe. Mit Threads und ähnlich komplexen Dingen beschäftige ich mich dann gerne später. Viele Dank.
> Bei Studio passiert aber nichts, wenn ich > den Befehl benutze. Fehlt da noch ein Hinweis, WO der Text > ausgegeben werden soll? Nö. printf gibt auf stdio aus, und das ist bei einer Windows-Applikation normalerweise nicht sichtbar. Dafür gibt es Konsolenapplikationen. Wenn Du aber mit Windows-GUI-Elementen arbeitest, und darauf lassen Deine weiteren Fragen schließen, dann müsstest Du entweder mit AllocConsole Dir ein Konsolfenster erzeugen und obendrein auch noch stdio auf diese Konsole umbiegen (kann ich gerade offhand nicht beschreiben, wie's geht, habe ich vor 10+ Jahren in der MSDN gelesen). Comboboxen können in der Tat zu Dropdown-Listboxen degradiert werden, das macht man mit dem Resourceeditor. Wenn Du mit "Visual C++ Express" GUI-Applikationen schreibst, dann tust Du das entweder in reinem C/C++ mit direkten Aufrufen der Windows-API-Funktionen (haariger Weg mit Nachrichtenschleife und ellenlangen switch-case-Statements) oder aber in einer MS-Perversion von C++ namens "Managed C++" mit der das .Net-Geraffel und Winforms angesprochen werden können. Für ersteres ist immer noch das Buch von Charles Petzold der Klassiker, der beschreibt, wie die Windows-API funktioniert, und zwar in C. Wer damit klarkommt, der wird begreifen, warum C++ schick sein kann und warum es Klassenbibliotheken wie die (nicht vollkommen zu Recht) verfemte MFC, wxWidgets, Qt etc. gibt. MFC kannst Du mit VC2005 Express nicht programmieren (soweit ich weiß), da die Unterstützung dafür in dieser kostenfreien Edition von VC2005 fehlt.
Hi, ich hatte eigentlich nicht vor in einer GUI dann noch mit Konsole anzufangen =) Da wollte ich ja gerade von weg. >>Comboboxen können in der Tat zu Dropdown-Listboxen degradiert werden, >>das macht man mit dem Resourceeditor. So ganz verstanden habe ich das jetzt nicht. Ich habe in der Doku den Hinweis auf Winres.exe gefunden, allerdings war der Text so gehalten, dass man auch ohne Weiteres annehmen könnte, dass der Resource Editor auf irgendeine geheime Weise in Studio 2005 Express bereits integriert ist, aber unter einem Editor stelle ich mir immer ein separates Programm vor, dass ich erst bewußt starten muss. Eine Winres.exe habe ich auf meiner Platte aber nicht gefunden. Es hat mich schon bei WordVBA gewundert (habe letztens ein kleines Formular programmiert), dass es keine reinen DropDown-Boxen mehr gibt. Eigentlich vermutete ich, dass ich nur in den Eigenschaften der ComboBox irgendwo ein True auf False setzen muss, um meine DropDown-Box zu bekommen. Aber da habe ich nichts gefunden. >>entweder in reinem C/C++ mit direkten Aufrufen der >>Windows-API-Funktionen Meinst Du damit Abläufe wie "WMPaint, PAINTSTRUCT, BeginPaint und TextOut"? >>oder aber in einer MS-Perversion von C++ namens "Managed C++" mit >>der das .Net-Geraffel und Winforms angesprochen werden können. Hmmm...also konstruiert Visual Studio die GUI über .NET bzw. WinForms. Jetzt weiß ich auch, warum ich bei der Installation .NET herunterladen musste! =) Verstehe ich das richtig, das Managed C++ so eine Art "Slang" ist, der nicht zum Standard gehört, mit dem es aber mit relativ einfacher Befehls-Syntax möglich wäre, "mal eben" einen beliebigen Text an einer bestimmten Stelle in einem Windows-Fenster auszugeben? Danke schonmal...
Nein, der Resource-Editor ist ein integraler Bestandteil von VC2005, so, wie er es auch schon bei den zig Vorgängerversionen war. Das ist halt der Programmteil, mit dem man sich Dialoge zurechtmalt, Windows-Controls darauf plaziert und denen Resource-IDs zuweist. Und mit rechtsklick auf ein Control dessen Eigenschaften bearbeiten kann. Die Eigenschaft einer Combobox, auch Dropdown-Liste zu sein, ist inhärent im Windows-Control "Combobox" enthalten - das ist keine Funktion von VC, irgendeiner Klassenbibliothek oder sonstwem. Text in einem Windows-Fenster ausgeben? DrawText, aber das gehört in den Messagehandler von WM_DRAW. Das allerdings wird durch das .Net/Winforms-Geraffel mit mehrern Abstraktionsschichten überzogen, so daß ich Dir beim besten Willen nicht sagen kann, wie das da funktioniert. Ich habe meine ersten Windows-Programme in klassischem ANSI-C geschrieben, ohne Visual Studio (gabs damals noch nicht) und mit dem Petzold in der Hand. Weia. Lange her.
> Verstehe ich das richtig, das Managed C++ so eine Art "Slang" ist, > der nicht zum Standard gehört, mit dem es aber mit relativ einfacher > Befehls-Syntax möglich wäre, "mal eben" einen beliebigen Text an > einer bestimmten Stelle in einem Windows-Fenster auszugeben? So ähnlich. Entweder den Text der TextBox (z.B. aTextBox->Text = "asfd") ändern, oder den Text im Paint-Event selbst zeichen.
1 | public ref class Form : ... { |
2 | |
3 | ...
|
4 | |
5 | // Vom Designer erzeugter Methodenrumpf
|
6 | private: System::Void Form_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { |
7 | e->Graphics->DrawString(str, Form->Font, Brushes::Black, x, y); |
8 | }
|
> Dropdown-Boxen Um aus der Dropdown-Box (ComboBox) eine DropDown-ListBox zu machen, muss nur die entsprechende Eigenschaft "DropDownStyle" geändert werden. > Das ist halt der Programmteil, mit dem man sich Dialoge zurechtmalt, > Windows-Controls darauf plaziert und denen Resource-IDs zuweist. Es gibt im NetFramework keine Resource-IDs, sondern nur Quelltext (mit Ausnahmen)
Machts doch nicht komplizierter als notwendig. Der OP hat einen Dialog. In dem Dialog gibt es einen Button und ein Textedit. Wenn er auf den Button drückt, soll im Textedit ein Text erscheinen. So zumindest interpretiere ich: > Fehlt da noch ein Hinweis, WO der Text > ausgegeben werden soll? Ich habe z.B. eine Textbox erstellt, > aber wie bekomme ich da jetzt einen variablen Text hinein? > Also nicht vorher initialisieren, sondern zur Laufzeit bei > einem Ereignis (z.B. OnClick) den Text dort erscheinen > lassen... Im VStudio im Resource Editor den Dialog aufmachen. Dann klickst du das Text Feld an. Rechte Maustaste und aus dem Menü wählst du aus: "Variable hinzufügen". Da geht dann ein Dialog auf, in dem die Eigenschaften der Variablen festgelegt werden. Ganz rechts, unter "Kategorie" wählst du aus 'Value'. (Der Variablentyp wechselt daraufhin zu CString). Jetzt gibst du noch einen Variablennamen dafür ein und "Fertig stellen". Diese neue Variable wird mit ein paar Makros mit dem Text Feld verknüpft. D.h. Du weist dieser Variablen was zu und rufst hinterher UpdateData(FALSE) auf. Der UpdateData Aufruf transferiert den String von der Variablen in die Textbox, bzw. wenn es UpdateData(TRUE) war umgekehrt von der Textbox in die CString Variable.
Karl heinz Buchegger wrote: > Machts doch nicht komplizierter als notwendig. > Au weia. Ich hab ja gar nicht nachgefragt ob er Forms oder MFC programmiert.
Hat die Express-Version überhaupt den Ressourcen-Editor und Klassen-Assistenten? Ich glaub die haben doch da alles wegkastriert.
Die Express-Version unterstützt keine MFC. Sonst hätte ich ähnliches wie Karl Heinz beschrieben ...
Rufus t. Firefly wrote: > Die Express-Version unterstützt keine MFC. > Das ist schlecht. > Sonst hätte ich ähnliches wie Karl Heinz beschrieben ... Dann bin ich wohl mit der Lösung draussen. Man kann über MFC schimpfen soviel man will, aber wenn man den Bogen erst mal raus hat, ist sie gar nicht so schlecht.
Alles ganz schoen Aufwendig um ein paar Texte und Zahlen in einer Textbox anzuzeigen.
Hi, da sind ja doch einige Antworten zusammegekommen...ich habe es inzwischen hinbekommen, zumindest die Textboxen mit variablen Text zu füllen. Vielen Dank. Aber da sich meine Wünsche allgemein wohl als etwas schwierig darstellen, frage ich mal anders: Ich habe damals auf dem 68000er viel GUI mit Assembler programmiert, da gab es bei der Workbench auch eine recht brauchbare API für graphische Benutzerdialoge und Dateisystemoperationen und von daher bin ich - was die reine Lehre der Programmierung betrifft - sicherlich kein Anfänger, würde mich aber nur ungern in eine äußerst komplizierte proprietäre Technik reinarbeiten, die gerade in Bezug auf Windows Vista keine Zukunft hat. Es geht mir also darum, den klassischen C/C++ Code professionell zu erlernen (quasi die ObjektOrientiertheit ins Gehirn saugen...) und für das bunte Drumherum simple Funktionsaufrufe zu kennen, mit denen man ohne Probleme eine GUI inklusive OnClickEvents auch ohne einen graphischen Editor zusammenprorammieren kann. Ich habe in diesem Zusammenhang schon von QuickBasic gehört, dass in diesem Zusammenhang wohl genau diese Funktionen bieten soll. So in der Art: OpenWindow(XSize, YSize, Title, BGColor, ...) Welche Entwicklungsumgebung (mit Syntax-Highlighting, Compiler, Builder und am besten noch Debugger) ist denn zu empfehlen, um auf der einen Seite sowohl klassischen C bzw. C++ Code in eine autarke Exe kompilieren zu können, als auf der anderen Seite nicht das Rad neu erfinden zu müssen, um ein einfaches Fenster mit Schaltflächen und OnClickEvents zu erstellen? Kostenlos wäre natürlich prima, aber ich bin auch gerne bereit, etwas zu investieren, wenn ich dafür ein Produkt erwerbe, dass mir für die nächsten Jahre und gerade in Bezug auf WindowsVista Planungssicherheit gibt. Wenn ich das richtig verstanden habe, bräuchte ich - um zumindest unter Windows eine zukunftssichere GUI zu erstellen - eine IDE mit MFC-Unterstützung. InLineASM-Unterstützung wäre natürlich der absolute Hit.
> Ich habe damals auf dem 68000er viel GUI mit Assembler programmiert, > da gab es bei der Workbench auch eine recht brauchbare API für > graphische Benutzerdialoge und Dateisystemoperationen Boopsi, Viewports, datatypes.library und BCPL-Pointer ;-) > und von > daher bin ich - was die reine Lehre der Programmierung betrifft - > sicherlich kein Anfänger, würde mich aber nur ungern in eine > äußerst komplizierte proprietäre Technik reinarbeiten, die gerade > in Bezug auf Windows Vista keine Zukunft hat. > Wenn ich das richtig verstanden habe, bräuchte ich - um zumindest > unter Windows eine zukunftssichere GUI zu erstellen - eine IDE > mit MFC-Unterstützung. Zukunftssicher und MFC schließen sich aus (ausser man will jedes Rad in allen Formen neuerfinden)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.