Foros del Web » Programación para mayores de 30 ;) » Programación General »

Variable en MessageBox (C++)

Estas en el tema de Variable en MessageBox (C++) en el foro de Programación General en Foros del Web. Hola a tod@s!!! Mi pregunta es la siguiente: ¿Es posible mostrar el valor de una variable a través de un MessageBox en C++? Ya sé ...
  #1 (permalink)  
Antiguo 02/09/2005, 06:12
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Variable en MessageBox (C++)

Hola a tod@s!!!
Mi pregunta es la siguiente: ¿Es posible mostrar el valor de una variable a través de un MessageBox en C++? Ya sé que se puede especificar un título, los botones que aparecerán en el cuadro de mensajes, el botón por defecto y algún icono, pero yo quiero mostrar, como parte del mensaje, el contenido de una variable.
He buscado por Internet pero no encuentro nada. No sé, quizá no sea posible hacer lo que yo quiero.
Si alguien sabe cómo hacerlo o confirmarme que no es posible se lo agradecería mucho.
Gracias por adelantado.
Un saludo a tod@s.
  #2 (permalink)  
Antiguo 02/09/2005, 06:20
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Vale, ya lo he encontrado. Tres días buscando en Internet y justo cuando dejo el mensaje en el foro lo encuentro.
Por si a alguien le sirve alguna vez la sintaxis es la siguiente:
MessageBox("texto" + variable + "texto",...)
Así se consigue mostrar el contenido de una variable dentro de un cuadro de mensajes

Un saludo a tod@s
  #3 (permalink)  
Antiguo 02/09/2005, 06:29
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Vaya, acabo de probarlo y me he dado cuenta de que esa sintaxis únicamente funciona para variables de tipo cadena (CString).
Hay alguna manera para mostrar otro tipo de variables (int, double,...) ó sólamente se pueden visualizar variables de tipo cadena???
Gracias por adelantado
  #4 (permalink)  
Antiguo 02/09/2005, 07:01
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Solo se puede visualizar una cadena de caracteres:

int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

Pero podes usar las funciones sprintf o wsprintf para hacer algo como esto:

Código:
char cadena[1024];
ZeroMemory(cadena, 1024);
wsprintf(cadena, "Este numero en decimal %d, ahora en hexadecimal 0x%X", 50, 50);
MessageBox(0, cadena, "Demostracion simple", 0);
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 02/09/2005, 11:00
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Gracias EternalIdol por confirmarme que sólamente se pueden visualizar cadenas de caracteres con MessageBox. No puedo utilizar las otras dos funciones de las que me hablas, porque necesito visualizarlo en un cuadro de mensajes (Visual c++). Además, pongo en mi proyecto las líneas que me has dicho y no hacen nada, supongo que es porque es Visual C++ en lugar de C++ en consola.
Gracias de todas formas, seguiré intentando obtener la forma de mostrar el contenido de una variable de tipo double en pantalla, aunque no sé si va a ser posible ni cómo hacerlo. Ya lo he intentado todo, y cada vez estoy más perdida. Gracias otra vez.
Un saludo a tod@s
  #6 (permalink)  
Antiguo 02/09/2005, 11:13
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Perdón, lo había entendido mal. Había probado el código que pusiste pero había puesto una cosa mal, por eso no funcionaba.
De todas formas (y siento ser tan pesada, pero estoy muy perdida y lo necesito urgentemente) parece que no me sirve, porque lo que yo necesito visualizar es un tipo de dato double o float (ambos me servirían), con lo que cambio %d por %l ó %f (respectivamente para el double y el float) pero en este caso no lo interpreta bien, porque no muestra nada. Si el número es entero con %d funciona a la perfección, pero con %f ó %l no visualiza nada.
¿Por qué? Debería hacerlo, no?
Gracias por ayudarme
Un saludo a tod@s
  #7 (permalink)  
Antiguo 02/09/2005, 11:49
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Evidentemente habias hecho algo mal, antes de poner codigo compruebo que funcione. wsprintf no permite el especificador %f para numeros flotantes y %l no lo veo definido tampoco en sprintf que si soporta %f:

Código:
#include <windows.h>
#include <stdio.h>

void main()
{
  char cadena[1024];
  ZeroMemory(cadena, 1024);
  sprintf(cadena, "PI %.8f", 3.14159265);
  MessageBox(0, cadena, "Demostracion simple", 0);
}
El .8 sirve para especificar el numero de decimales.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #8 (permalink)  
Antiguo 02/09/2005, 12:01
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Muchísimas gracias, ahora sí que lo he conseguido. Utilizando la función sprintf() Funciona perfectamente.
Gracias otra vez EternalIdol, me has ayudado muchísimo.
Un saludo a tod@s
  #9 (permalink)  
Antiguo 02/09/2005, 12:11
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
De nadas, me alegro de que te haya servido
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:10.