PDA

Ver la Versión Completa : Mensaje personalizado con MessageBoxA


mizzard
09-06-2011, 23:27:38
Hola a todos, os comento mi problemilla:

Uso C++Builder 2010 y me gustaría indicar un mensaje detallado usando Application->MessageBoxA.

En concreto de forma genérica muestro lo siguiente:

Application->MessageBoxA(L"No se puede realizar la compra",L"Error",MB_OK+ MB_ICONERROR);

Y me gustaría ponerlo de la siguiente forma:


AnsiString cadena1 = frmMain->StrGridTique->Cells[0][contFila];
AnsiString cadena2 = frmMain->DBTStock->Caption;

Application->MessageBoxA(L"No se puede realizar la compra debido a que el stock de " + cadena1 + L" es de " + cadena2 + L".",L"Error",MB_OK+ MB_ICONERROR);

El problema que me surge es que me salta el error:

Cannot convert 'UnicodeString' to 'const wchar_t *'

En el caso de querer sumar dos cadenas tal como esto y simplificando el problema:

Application->MessageBoxA(L"Error" + L"Error" ,L"Error",MB_OK+ MB_ICONERROR);

Me surge un error en el +:

Invalid pointer addition

Por lo que deduzco que deberia poner todo el String dentro del AnsiString y mostrarlo en el mensaje.... pero vuelvo a tener el primer problema...

Alguna idea de como poder hacer lo que quiero???

Muchas gracias y un saludo!

escafandra
09-06-2011, 23:51:04
El problema es que MessageBox no acepta AnsiString como parámetros sino w_chart*, por lo tanto deber realizar la conversión con c_str().

Debes hacer algo como esto:


String cadena1 = frmMain->StrGridTique->Cells[0][contFila];
String cadena2 = frmMain->DBTStock->Caption;
String MSG = L"No se puede realizar la compra debido a que el stock de " + cadena1 + L" es de " + cadena2 + L".";
Application->MessageBoxA(MSG.c_str(), L"Error", MB_OK | MB_ICONERROR);

Saludos.

mizzard
10-06-2011, 00:08:21
Muchas gracias, ese era el problema :D


Un saludo!