2017-04-18 3 views
-1

Ich versuche Myform C++ MessageBox verwenden Tasten mit Text zu haben, welche Funktionen wie Schließen oder Ja und Nein tun könnte, aber ich bin immer Fehler, wenn ich versuche Schaltflächen hinzufügen zu MessageBox selbst.Beispiel Überlastung MessageBox

Fehler:

  • 'MessageBox': mehrdeutiges Symbol IntelliSense: keine Instanz von überladenen Funktion

  • IntelliSense: keine Instanz von überladenen Funktion „System :: Windows :: Forms :: MessageBox :: Show "entspricht der Argumentliste Argumenttypen sind: (const char [12], System :: Windows :: Formulare :: MessageBoxButtons, System :: Windows :: Forms :: MessageBoxIcon)

ich auch #include <windows.h>

Code verwendet haben:

private: System::Void autoriusToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { 

     MessageBox::Show("Close:\n" 
     "Program?", MessageBoxButtons::OK); 

    } 

private: System::Void apieProgramaToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { 

     MessageBox::Show("Choose your answer", MessageBoxButtons::YesNoCancel, MessageBoxIcon::Exclamation); 

    } 
+0

nicht zu Ihrem Problem zu tun haben, aber wenn Sie Ihre Benutzer „Programm schließen?“ Fragen, geben Sie ihm nicht nur eine „Ok“ Option! –

+0

Schreiben von GUI-Anwendungen mit C++/CLI wird wirklich nicht unterstützt; Erwäge stattdessen, C# zu verwenden. –

Antwort

1
MessageBox::Show("Close:\nProgram?", MessageBoxButtons::OK); 

MessageBox::Show("Choose your answer", MessageBoxButtons::YesNoCancel, MessageBoxIcon::Exclamation); 

OK, Ihre zwei Methodenaufrufe für Überlastungen suchen, (String^, MessageBoxButtons) und (String^, MessageBoxButtons, MessageBoxIcon) nehmen.

MSDN listet die Überladungen von MessageBox::Show auf, und keine dieser Überladungen ist enthalten. Die nächsten Überladungen sind (String^, String^, MessageBoxButtons) und (String^, String^, MessageBoxButtons, MessageBoxIcon). Die zweite Zeichenfolge ist die Nachrichtenfeldbeschriftung, der Text, der in der Titelleiste des Nachrichtenfelds angezeigt wird.

Sie brauchen auch nicht #include <windows.h>, um diese .Net-Methoden aufzurufen.

So etwas sollte den Trick für Sie tun:

MessageBox::Show("Close:\nProgram?", "My Fancy App", MessageBoxButtons::OK); 

MessageBox::Show("Choose your answer", "My Fancy App", MessageBoxButtons::YesNoCancel, MessageBoxIcon::Exclamation); 
+0

Dank dieser Methode funktioniert, ich denke, ich habe meinen Code falsch geschrieben. – Duona