Autor
|
Tema: MessageBox , problema a la hora de mostralo. (Leído 4,749 veces)
|
piluve
|
Hola!!! Tengo un problema con esta función de la librería windows.h. El problema es que estoy utilizando estas ventanas para mostrar mensajes de error cuando el usuario hace cosas indebidas. Aquí os dejo el código: void Mensaje(int cod) { if(cod==0) { MessageBox(NULL, "Pon la ficha sobre un espacio en blanco" , "Stratego 1.0",MB_OK ); //MB_ICONASTERISK //MessageBox(NULL,) } if(cod==1) { //MessageBox(NULL, "Has pulsado una tecla no registrada" , "Stratego 1.0", MB_ICONASTERISK); }
}
Tengo dos problemas: El primero, cuando salta la ventana POR PRIMERA VEZ, salta en segundo plano no por encima de mi programa. Cuando salta la ventana , si selecciono mi programa y hago cualquier acción , cuando cierro mi Messagebox, estas acciones se hacer. ¿Cómo puedo hacer para evitar estas cosas? Un saludo
|
|
« Última modificación: 18 Enero 2014, 12:50 pm por piluve »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
El primer parametro es un HWND, pasandole el correcto deberias solucionar ambos problemas ya que como dice la documentacion: MB_APPLMODAL 0x00000000LThe user must respond to the message box before continuing work in the window identified by the hWnd parameter. However, the user can move to the windows of other threads and work in those windows. ... MB_APPLMODAL is the default if neither MB_SYSTEMMODAL nor MB_TASKMODAL is specified.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
piluve
|
Hola! Gracias por tu respuesta, lo que he conseguido es que mi ventana se muestre ahora en "TOP" siempre pero no puedo evitar que si el usuario selecciona la aplicación pueda hacer cosas aún estando el messagebox. MessageBox(NULL, "Pon la ficha sobre un espacio en blanco" , "Stratego 1.0",MB_OK|MB_TOPMOST|MB_APPLMODAL);
Creo que ahora el problema esta en que debería asignarle una ventana al campo "NULL" pero no estoy muy seguro de como hacerlo. Un saludo.
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
Hola! Gracias por tu respuesta, lo que he conseguido es que mi ventana se muestre ahora en "TOP" siempre pero no puedo evitar que si el usuario selecciona la aplicación pueda hacer cosas aún estando el messagebox. MessageBox(NULL, "Pon la ficha sobre un espacio en blanco" , "Stratego 1.0",MB_OK|MB_TOPMOST|MB_APPLMODAL);
Creo que ahora el problema esta en que debería asignarle una ventana al campo "NULL" pero no estoy muy seguro de como hacerlo. Un saludo. Lo que debes hacer es obtener el handle de la ventana de la aplicación principal ( no ventanas hijas ) y pasarselo al primer parametro de MessageBox. Yo no sé de que manera estas creando la ventana principal así que no podria decirte algo directo o talvez FindWindow pero seria incesario si la estas creando por ejemplo con CreateWindow simplemente guardas el valor retornado por la funcion para usarlo despues.
|
|
|
En línea
|
|
|
|
piluve
|
En realidad no estoy creando una ventana sino que estoy utilizando el CMD de windows.
¿Quizás esto afecte en algo?
Un saludo.
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
En realidad no estoy creando una ventana sino que estoy utilizando el CMD de windows.
¿Quizás esto afecte en algo?
Un saludo.
¿Que quieres decir? Estas llamando la CMD desde tu programa C/C++ y enviandole comandos o estas usando directamente la CMD?
|
|
|
En línea
|
|
|
|
piluve
|
Estoy haciendo un programa en modo texto que se ejecuta directamente en el intérprete de windows , el cmd.
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
Estoy haciendo un programa en modo texto que se ejecuta directamente en el intérprete de windows , el cmd.
usa GetConsoleWindow, el resultado al primer parametro de MessageBox.
|
|
|
En línea
|
|
|
|
piluve
|
Parece que no funciona de esta manera. Dice que "GetConsoleWindow(); was not declared on this scope." He probado creando este define: #define _WIN32_WINNT 0x0500 Y nada. Esto no va ...
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
Parece que no funciona de esta manera. Dice que "GetConsoleWindow(); was not declared on this scope." He probado creando este define: #define _WIN32_WINNT 0x0500 Y nada. Esto no va ... Si es así entonces es error de compilación, que compilador estas usando? estas incluyendo las cabeceras correctas? Tu código?
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
dll messagebox
Juegos y Consolas
|
nikito
|
2
|
3,484
|
12 Septiembre 2005, 22:44 pm
por Mance
|
|
|
Problema con MessageBox
.NET (C#, VB.NET, ASP)
|
darkxxx
|
9
|
10,720
|
16 Octubre 2008, 21:35 pm
por el_chente23
|
|
|
MessageBox, text in.
Programación C/C++
|
gxg
|
3
|
2,753
|
12 Mayo 2011, 13:10 pm
por fary
|
|
|
Problema de Fecha y Hora en ASP.NET
.NET (C#, VB.NET, ASP)
|
jacj0102
|
2
|
3,936
|
4 Agosto 2011, 06:51 am
por jacj0102
|
|
|
[Pregunta] MessageBox.
.NET (C#, VB.NET, ASP)
|
Zodiak98
|
2
|
2,711
|
18 Septiembre 2013, 07:28 am
por Zodiak98
|
|