MessageBox und MemberVariable in Funktion einsetzen
-
Hi,
ich versuche in einer Funktion, die sonst auch funktioniert, eine MessageBox auszugeben und in einer MemberVarible einen Wert zuspeichern. In MemberFunktionen funktioniert das aber nicht in der selbsterstellten. Da bekomme ich Fehlermeldungen.
Hier die Funktion:double Div(double ,double ) { if (b == 0) { MessageBox("Fehler: Division durch Null!"); m_DispOp = "Err"; return 0; } else { return a / b; } }Gruß Matthias
-
Und was sagt die Fehlermeldung?
-
Der sagt das hier:
Kompilierung läuft...
Taschenrechner3Dlg.cpp
D:\prog C++\Taschenrechner3\Taschenrechner3Dlg.cpp(836) : error C2660: 'MessageBoxA' : Funktion akzeptiert keine 1 Parameter
D:\prog C++\Taschenrechner3\Taschenrechner3Dlg.cpp(837) : error C2065: 'm_DispOp' : nichtdeklarierter Bezeichner
D:\prog C++\Taschenrechner3\Taschenrechner3Dlg.cpp(837) : error C2440: '=' : 'char [4]' kann nicht in 'int' konvertiert werden
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
Fehler beim Ausführen von cl.exe.Taschenrechner3.exe - 3 Fehler, 0 Warnung(en)
Wie schon gesagt, in einer MemberFunktion funktioniert das
Matthias
-
Die MessageBox-Variante, die du aufzurufen versuchst (MessageBox(LPCTSTR, LPCTSTR = 0, UINT = ...)) ist ein Member von CWnd - damit geht das in Klassen, die von CWnd abgeleitet sind, aber nicht woaders
Empfehlung: Mach dir eine Globale Funktion ReportError, die du jeweils aufrufst. Dann kannst du die "Fehlerberichterstattung" an einer Stelle anpassen.
Für eine MFC-SDI/MDI-Anwendung wäre das z.B.
extern CMyApp theApp; // CMyApp = name of aplication class, //best put this right below CMyApp declaration // ReportError: void ReportError(LPCTSTR msg) { HWND parent = AfxGetMainWnd()->GetSafeHwnd(); ::MessageBox(parent, msg, _T("Application Error"), MB_OK | MB_ICONSTOP); // see Win32 API }