В MessageBox требуется справка по C / CLI :: Показать

#winforms #c -cli

#winforms #c -cli

Вопрос:

Я создаю проект на C / CLI, в котором я должен отобразить окно сообщения в одной из моих форм.

Содержимое должно представлять собой комбинацию std::string и int.

Но я не могу получить правильный синтаксис.

Я попробовал следующее:

 std::string stringPart = "ABC";
int intPart = 10;
MessageBox::Show("Message"   stringPart   intPart);
  

Я также пытался:

 String^ msg = String::Concat("Message", stringPart);
msg = String::Concat(msg, intPart);
MessageBox::Show(msg);
  

Может кто-нибудь, пожалуйста, помочь мне с синтаксисом.

Спасибо.

Комментарии:

1. Какую ошибку вы получаете или с какой проблемой вы столкнулись?

2. social.msdn.microsoft.com/Forums/en-US/…

Ответ №1:

Ваша проблема в том, что thar std::string неуправляемый и не может быть назначен управляемому System::String . Решение заключается в сортировке. Смотрите эту страницу MSDN:http://msdn.microsoft.com/en-us/library/bb384865.aspx

Итак, вот решение (для Visual Studio):

 #include <msclr/marshal_cppstd.h>

// ...

std::string stringPart = "ABC";
int intPart = 10;

String^ msg = String::Concat("Message", msclr::interop::marshal_as<System::String^>(stringPart));
msg = String::Concat(msg, intPart);
MessageBox::Show(msg);
  

Комментарии:

1. Возможно, уже слишком поздно, но в mashalling нет необходимости. System::String имеет конструктор, который принимает const char* or const wchar_t* , поэтому решение простое: String^ msg = gcnew System::String(stringPart.c_str());