Ergebnis einer Berechnung in MessageBox
-
Ich habe als C++ Anfänger folgendes Problem.
Ich möchte zwei Eingabefelder zusammenrechnen und
das Ergebnis in einer Messagebox oder in einem
weiteren Eingabefeld ausgeben.Die Variablen sind vom Typ INT (Integer)
Hier mein Code
// Nachrichtenvariable mit Benutzereingabe aktualisieren UpdateData(TRUE); // Ergebnis anzeigen m_wert3=m_wert1+m_wert2; MessageBox (m_wert3);Hier die Fehlermeldung ...
...\ctest3Dlg.cpp(190) : error C2664: 'MessageBoxA' : Konvertierung des Parameters 1 von 'int' in 'const char *' nicht moeglich
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
Fehler beim Ausführen von cl.exe.Was mache ich falsch ???
-
Die Messagebox erwartet, daß du ihr einen Text (als String) zur Verfügung stellst, und keine Integer-Zahl. Am besten schaust du mal in die C++-FAQ, um eine Möglichkeit zu finden, deine Zahl in einen String umzuwandeln.
(PS: Unter MFC bietet sich dafür CString::Format() an)
-
Danke für die schnelle Antwort.
OK, ich verstehe zwar nicht warum in C++ die Messagebox einen
String benötigt, aber sei es drum.Die Frage ist aber wie kann ich das Ergebnis in einer dritten
Eingabebox ausgeben. Ist auch in diesem Fall eine Umwandlung
nötig ???
-
c-starter schrieb:
OK, ich verstehe zwar nicht warum in C++ die Messagebox einen
String benötigt,Ganz einfach. Weil es sehr, sehr viele Möglichkeiten gibt, eine Zahl als Text darzustellen. Diese Information ist nicht vorhanden, wenn du nur den Wert angibst. Darum ist es deine Aufgabe, den Wert in der gewünschten Darstellung in Textform zu bringen.
-
Warum eine MessageBox eine String benötigt musst du Microsoft fragen.
Ich verstehe ja auch nicht wieso du 2 Eingabefelder berechnen willst.
Es ist eben so definiert. Bevor man zum Programmieren anfängt sollte man mal die Grundkenntnisse lernen.
Eine davon ist: Rufe nie eine Funktion mit Parametertypen auf obwohl die Funktion andere erwartet.z.B. auszug aus der MSDN:
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = NULL,
UINT nType = MB_OK
);Hier wird ein LPCTSTR erwartet und kein INT.
-
// Nachrichtenvariable mit Benutzereingabe aktualisieren UpdateData(TRUE); CString str; // Ergebnis anzeigen m_wert3=m_wert1+m_wert2; str.Format("%i", m_wert3); // Kopiert den Integer in den String MessageBox (str);Ich hoffe deine Member-Variable heißen im Projekt nicht m_wert1-3!
-
Danke "Konkret". Das sieht sehr gut aus.
Übrigens Unix-Tom, ich habe mehrere Jahre VB Erfahrung.
Also ganz ohne Grundwissen geht das auch nicht.Allerdings muss ich zugeben das die Programmierung unter
C++ wesentlich schwieriger zu sein scheint.Danke für die Hilfe an alle.