Visual C++ Ein- und Ausgaben |
Page updated: 26. Juli 2006
Inhalt: Das Programm - Statischer Text -
Eingabefeld - Buttons - Textfeld - Tab Order - Member Variable - Message Maps - Programmierung der Funktion
Demoprojekt ein_ausgabe.zip
Das Programm.
Eingaben können in VC++ über ein Editfeld, Ausgaben über ein Textfeld (unter anderem) realisiert werden. Das Demoprogramm übernimmt die Eingabe mit Klick auf OK Knopf und gibt die Eingabe mit Zusatztext wieder aus:
Über den Assistenten zur Erstellung wird wie beim Aufbau von VC++ Programmen erläutert vorgegangen. Falls man nach der Erstellung der dialog-basierenden Anwendung mit dem Assistenten den Fenstertitel ändern möchte, ist dies über die Eigenschaften (engl. Properties) des Dialogfensters möglich. Dort läßt sich auch die Schrift für das Dialogfenster inkl. aller noch einzufügenden Objekte einstellen (Button Font), ändern Sie nicht die ID Bezeichnung:
TOP
Statischer Text.
Der Text "Bitte Ihren Namen eingeben:" ist ein statisches Textfeld (dessen Text wird nie geändert) und über die Toolbox (dt. Werkzeugkiste) eingefügt. Über die Eigenschaften des Textfeldes läßt sich der Anzeigetext festlegen (ändern Sie nicht die ID Bezeichnung IDC_STATIC):
TOP
Eingabefeld.
Das Editfeld für die Eingabe wird über die Toolbox eingefügt. Vergeben Sie bei den Eigenschaften des Editfeldes eine neue ID Bezeichung, zum Beispiel IDC_Eingabe (IDC_ sollten Sie belassen, steht nach VC++ Konvention für ID Control, Control = Steuerelement):
TOP
Die Buttons.
Der vom Erstellungsassistenten OK Button wird gelöscht (aber nicht der Abbrechen Button) und aus der Toolbox ein neuer Button eingefügt, über die Eigenschaften mit &OK beschriftet (das & Zeichen vor dem Buchstaben O sorgt dafür, daß man auch mit ALT-O statt der Maus den Knopf wählen kann) und eine neue ID, zum Beispiel IDC_OKButton vergeben. Zusätzlich ist bei der Karte Styles die Eigenschaft "Default Button" zu aktivieren (ein Druck der Enter Taste ist gleichbedeutend mit einem Mausklick auf diesen Button):
Beim den durch den Erstellungsassistenten eingefügten Abbrechen Button wird bei den Eigenschaften die Beschriftung zu &Ende abgeändert, aber ändern Sie nicht die ID Bezeichnung IDCancel!
TOP
Textfeld zur Ausgabe.
Als Ausgabeobjekt wird wiederum ein Textfeld aus der Toolbox gewählt, dessen Eigenschaften wie folgt eingestellt werden. Ändern Sie die ID zum Beispiel zu IDC_Ausgabe und entfernen Sie den Inhalt von Caption (sonst ist bei Programmstart schon eine Anzeige "Static" vorhanden). Unter dem Reiter Styles können Sie die zentrierte Ausgabe und den vertieften Rand einstellen:
Hinweis: Ein Textfeld kann, wie der Name schon sagt, nur Text ausgeben. Wollen Sie Zahlen ausgeben, müssen die Zeichenketten mit den in Standard C/C++ üblichen Funktionen umgewandelt werden oder mit der Format Methode der VC++ Klasse CString, die prinzipiell wie die sprintf() Funktion in C arbeitet:
m_Ausgabe.Format("%.1f", 123.456f);
Die Eigenschaft Caption der Membervariablen enthält die Zeichenkette "123.5" durch Umwandlung des float Wertes 123.456.
TOP
Tabulator Reihenfolge.
Um den Objekten im Dialogfenster eine gewünschte Reihenfolge für die Tabulatortaste zuzuweisen und außerdem festzulegen, daß der Cursor bei Programmstart im Eingabefenster steht, ist im Menü LAYOUT - TABORDER zu wählen und die Reihenfolge durch Mausklicks auf die einzelnen Objekte festzulegen:
TOP
Member Variable.
Damit ist das Design des Dialogfensters abgeschlossen. Als nächstes müssen sogenannte Membervariablen für das Engabe- und das Ausgabefeld festgelegt werden. Damit haben Sie im Programm Zugriff auf deren Inhalte. Dazu wird der Klassenassistent aufgerufen, Reiter "Member Variable". Für IDC_Ausgabe und IDC_Eingabe werden über den Button "Variable hinzufügen" die beiden Variablen m_Ausgabe und m_Eingabe der Kategorie Value (dt. Wert) vom Typ CString eingefügt, die Länge der Zeichen bei der Eingabe auf maximal 20 Zeichen begrenzt. Es ist VC++ Konvention, die Namen der Membervariablen mit m_ beginnen zu lassen. Der Datentyp CString ist eine Klasse in VC++, die der ANSI C++ STL Klasse String ähnelt und demzufolge deren Eigenschften und Methoden hat - und viel mehr.
TOP
Message Maps.
Nun muß festgelegt werden, daß der OK Button auf einen Mausklick reagiert. Dazu wird der Klassenassistent aufgerufen, Reiter "Message Maps". Für die Objekt-ID dieses Buttons wird als zu reagierende Message an den Event Handler BN_CLICKED ausgewählt und der Button "Funktion einfügen" (engl. Add Function) gewählt. Nehmen Sie den Vorschlag für den Namen der Funktion an. In der Abbildung ist der Button zum Hinzufügen der Funktion deaktiviert, weil man nicht eine zweite Funktion für die gleiche Aktion programmieren kann.
TOP
Programmierung der Funktion.
Mit dem Button "Edit Code" gelangen Sie zu der .cpp Datei, in der der folgende Code für die Funktion programmiert werden muß.
void CEin_ausgabeDlg::OnOkbutton()
{
UpdateData(true);
m_Ausgabe = "Hallo " + m_Eingabe + "!";
UpdateData(false);
}
Die Zuweisung für m_Ausgabe folgt der üblichen Syntax für die STL von Standard C++. Die Membervariablen enthalten jedoch nicht automatisch die Werte, die im Fenster des laufenden Programmes zu sehen sind - sie müssen in die Membervariablen übertragen werden. Dazu dient die Funktion UpdateData() mit dem aktuellen Parameter true. Auch wenn im Programm Membervariablen ein neuer Wert zugewiesen wurde, erscheinen Sie nicht automatisch auf dem Bildschirm. Mit der Funktion UpdateData() und dem aktuellen Parameter false werden sie angezeigt.
Damit ist das am Anfang dieser Webseite gezeigte Programm fertig.
TOP
Dr. J. Kubiak j.kubiak@gmx.net