Mit Eingabeboxen weiterarbeiten
-
Hallo,
bisher habe ich nur mit der Konsole gearbeitet. Jetzt habe ich angefangen mit Visual C++ 2005 zu arbeiten und eine Maske aufgebaut. Doch leider hab ich bei diesem Code wirrwarr den Überblick verloren und weiß jetzt nicht wie ich mit den Inhalten der Eingabeboxen weiterarbeiten soll und wie ich sie ausgegeben soll.Danke schonmal im vorraus
-
Du musst entsprechende Events verarbeiten. Beispiel: Der User gibt etwas in ein Edit Control ein und drückt danach einen Button "verarbeiten". Im Resourcen-Editor kannst du per Rechtsklick auf einen Button (oder ein anderes Steuerelement) die Funktion "Ereignishandler hinzufügen" aufrufen. Wähle dort das BN_CLICKED Event. es wird eine Methode generiert, die aufgerufen wird, sobald der User eben diesen Button drückt. Wenn du dann den Inhalt deines Edit Controls haben willst, kannst du das über GetWindowText machen. Mit GetDlgItem kommst du übrigens an dein Control 'ran (eine zweite Möglichkeit wäre eine Control-Variable).
void CTestDlg::OnBnClickedButton1() //generierter Event-Handler { CString sEdit; //String-Variable GetDlgItem(IDC_EDIT1)->GetWindowText(sEdit); //Inhalt des Edit Controls in sEdit speichern (IDC_EDIT1 ist die ID deines Edit Controls) MessageBox(sEdit); //sEdit per MessageBox ausgeben }Tipp 1: Fang erstmal mit einer dialogbasierten Anwendung an.
Tipp 2: Ich habe mich beim Beispiel an die automatisch vergebenen Namen gehalten. Du solltest natürlich sprechendere Namen vergeben.
Tipp 3: Zieh dir mal ein gutes MFC-Tutorial 'rein!
-
Warum nicht gleich GetDlgItemText?
-
Martin Richter schrieb:
Warum nicht gleich GetDlgItemText?
Macht Sinn! Trotzdem bin ich in den meisten Fällen eher für eine Control-Variable. Ist auf Dauer praktischer...
-
Aber hier hast Du GetDlgItem verwendet und das macht nun wirklich keinen Sinn gegenüber getDlgItemText, oder gar GetDlgItemInt!
GetDlgItem(IDC_EDIT1)->GetWindowText(sEdit);
-
Ja ja, hast ja Recht!

Ich meinte das ja nur so, dass ich selbst lieber Control-Variablen benutze und deshalb eigentlich nie bzw. seltenst GetDlgItem o.ä. verwende. Daher habe ich gar nicht daran gedacht, dass es ja auch so schöne Funktionen wie GetDlgItemText gibt. Hier habe ich nur der Einfachheit halber GetDlgItem benutzt, so dass er das direkt übernehmen kann.
-
danke für die schnelle hilfe hab grad feierabend werd es gleich mal testen
-
Hallo,
kann jemand ein einfaches Programm hier reinstellen welches 2 Eingabeboxen enthält und der inhalt der ersten box mit dem inhalt der zweiten box addiert wird? Und eine Ausgabe im selben fenster erscheint.
-
void CTestDlg::OnBnClickedButton1() { CString sEdit; int res=GetDlgItemInt(IDC_EDIT1)+GetDlgItemInt(IDC_EDIT2); sEdit.Format("Ergebnis: %d",res); MessageBox(sEdit); }Sollte passen, denke ich. Hoffentlich, sonst krieg ich wieder von Martin eins auf den Deckel...

-
Das geschieht jetzt aber nur bei klick auf Button1 oder?
Gibt es eine Möglichkeit dies gleich "on the run" auszurechnen?
-
Klar. Dann musst du nur das passende Event der Edit Controls (ON_EN_CHANGE) verarbeiten und das Ergebnis am besten in einem CStatic ausgeben (jedesmal eine MessageBox wäre wohl nicht so gut
).