private: System::Void btn_entrar_Click(System::Object^ sender, System::EventArgs^ e) {
string btn_texto = txt_login->Text->ToString();
MessageBox(NULL, "Hello!", btn_texto.c_str(), MB_OK | MB_ICONEXCLAMATION);
}
我通常在Visual C Studio 2008 Professional中创建一个Windows窗体应用程序,我添加了一个单击功能(通过双击设计模式下的按钮),所以我在它生成的函数内编写了代码 .
它产生了2个错误:
错误1:
错误C2440:'初始化':无法从'System :: String ^'转换为'std :: basic_string <_Elem,_Traits,_Ax>'
错误2:
错误C2872:'MessageBox':模糊符号1>可以是'C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ include \ winuser.h(7374):int MessageBox(HWND,LPCTSTR,LPCTSTR,UINT) '1>或'c:\ windows \ microsoft.net \ framework \ v2.0.50727 \ system.windows.forms.dll:System :: Windows :: Forms :: MessageBox'
我在Windows 7上的Visual Studio 2008 Professional和.NET Framework 3.5下的项目中使用C创建
有人知道如何解决这个问题?我查了一下但找不到解决办法 . 我希望我提供了足够的信息 . 提前致谢 .
@edit Example Given by Cody Gray
System::String btn_texto = txt_login->Text->ToString();
System::Windows::Forms::MessageBox(NULL, "Hello!", "HI", MB_OK | MB_ICONEXCLAMATION);
错误得到了
错误C3149:'System :: String':此处不能使用此类型而没有顶级'^'错误C2661:'System :: Windows :: Forms :: MessageBox :: MessageBox':没有重载函数需要4个参数
所以我在System :: String之后添加^解决了第一个错误:
System :: String ^ btn_texto = txt_login-> Text-> ToString();
但第二个错误没有修复,顺便说一句,我如何在MessageBox函数中添加“btn_texto”内容?谢谢!
2 回答
解决了它 . :)
您将C字符串类型(
std::string
)和.NET Framework字符串类型(System::String
)混合在一起,并且's just not going to work out well. Or at least it'不会非常简单 . 决定你要使用哪一个并坚持下去 .更具体地说,第一个错误是由于这一行错误引起的:
它出错的第一个原因是因为它创建了一个
std::string
类型的对象(可能是在代码文件的顶部有一个using namespace std;
语句),这是C字符串类型,而不是.NET Framework字符串类型 . .NET Framework字符串类型是您必须将命名空间完全限定为System::String
的类型 .第二个原因's wrong is because it'使用
ToString()
方法将String
对象(由Text
属性返回)转换为String
对象毫无意义 . 完全关闭最后一个函数调用 .第二个错误是由Win32标头提供
MessageBox
函数引起的,.NET Framework也是如此 . 编译器需要知道您要调用哪一个 .::MessageBox
.但是你会遇到无法从
System::String
转换为C风格字符串的问题 . 有关如何在C / CLI中提供的各种字符串类型之间进行转换的说明,请参见this article .System::Windows::Forms::MessageBox
. 此版本的优点是您不需要进行任何字符串转换,因为它接受System::String
类型的参数 . .NETMessageBox
包装器支持与Win32MessageBox
函数相同的所有选项,但其中一些选项的顺序不同,因此您需要特别注意文档 .