ActiveX - Componentes COM: AfxMessageBox

 
Vista:

Componentes COM: AfxMessageBox

Publicado por Gorka Fernandez (1 intervención) el 23/08/2002 12:07:00
Buenas!
Estoy intentando sacar un mensaje en mi PDA usando AfxMessageBox con el resultado de parsear la respuesta de una Web Sevice.
Tengo este código

[...]
hr = penv->Parse ( CComVariant(t), CComBSTR(L"") ) ;

CComPtr<ISOAPNodes> p ;
// get the parameters collection again, to get the response parameters
penv->get_Parameters(&p) ;
CComPtr<ISOAPNode> retNode ;

// get the first node in the parameters collection
p->get_Item(0, &retNode) ;

// get the nodes value
CComVariant v ;
retNode->get_Value(&v) ;

// change its type to a string
v.ChangeType(VT_BSTR) ;

AfxMessageBox((LPCTSTR)v.bstrVal) ;
[...]

El problema es que me saca el messageBox, pero en lugar de salir el resultado que yo espero, me saca caracteres extraños, estilo cuadrados , acentoscircunflejos, letras sueltas...

Me pasaba lo mismo al ejecutar esto:

AfxMessageBox((LPCTSTR)"Hello!");

y lo solucioné añadiendo una L antes del texto:

AfxMessageBox((LPCTSTR)L"Hello!");

Alguien sabe por qué pasa esto. Puede ser que no esté parseando bien la respuesta. La web service me da el resultado esperado, pero no se si se recoge bien.
Soy bastante novatillo en esto de componentes COM y en C++, asi que si alguien me puede echar una mano. Gracias a todos!.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro Andrade

Componentes COM: AfxMessageBox

Publicado por Alejandro Andrade (213 intervenciones) el 24/03/2023 22:10:37
Es probable que el problema sea debido a que el mensaje que estás intentando mostrar en el AfxMessageBox contiene caracteres que no están en el conjunto de caracteres ANSI. Para solucionar esto, puedes probar a cambiar el parámetro de entrada del AfxMessageBox a un tipo de cadena Unicode agregando la letra L antes del mensaje, como ya has hecho en el segundo ejemplo que has dado.

Si aún tienes problemas con la visualización de caracteres extraños, también puedes probar a utilizar una fuente de caracteres Unicode para el mensaje, como la fuente Arial Unicode MS. Puedes hacer esto pasando la fuente como argumento adicional en el AfxMessageBox, de la siguiente manera:

1
AfxMessageBox((LPCTSTR)v.bstrVal, NULL, MB_OK, 0, 0, _T("Arial Unicode MS"));

Espero que esto te ayude a solucionar el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar