实例重载 MessageBox

instance overload MessageBox

我正在尝试使用 Myform C++ MessageBox 来制作带有文本的按钮,它可以执行 CloseYes,但当我尝试将按钮添加到 MessageBox 本身时出现错误。

Errors:

  • 'MessageBox' : ambiguous symbol IntelliSense: no instance of overloaded function

  • IntelliSense: no instance of overloaded function "System::Windows::Forms::MessageBox::Show" matches the argument list argument types are: (const char [12], System::Windows::Forms::MessageBoxButtons, System::Windows::Forms::MessageBoxIcon)

我也用过#include <windows.h>

代码:

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);

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

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

好的,您的两个方法调用正在寻找采用 (String^, MessageBoxButtons)(String^, MessageBoxButtons, MessageBoxIcon) 的重载。

MSDN 列出了 MessageBox::Show, and neither of those overloads is included. The closest overloads are (String^, String^, MessageBoxButtons) and (String^, String^, MessageBoxButtons, MessageBoxIcon) 的重载。在每一个中,第二个字符串是消息框标题,将显示在消息框标题栏中的文本。

另外,您不需要 #include <windows.h> 来调用这些 .Net 方法。

像这样的东西应该对你有用:

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

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