SoloCodigo
Programación General => C/C++ => Visual C++ => Mensaje iniciado por: Diodo en Lunes 2 de Agosto de 2004, 14:51
-
Hola
Me gustaria mantener un dialogo siempre visible por encima de la ventana que lo llamo, alguien sabe como hacerlo??
Gracias :hola:
-
Creo ke con hacerlo modal te debería valer. De esta forma, el dialogo aparecerá por encima de los demás y hasta ke no lo cierres o pulses algún botón no podrás volver a los de debajo. La forma de crearlos es la habitual, por ejemplo:
CDialog_prueba dlg_prueba(this);
r = dlg_prueba.DoModal ();
No sé si será éso lo ke buscas...
-
Hola Sergio
Gracias por tu contestacion, pero me exprese mal, lo que yo queria es un dialogo no modal, que me deje acceder al Mainframe pero que este siempre superpuesto a este.Algo parecido a las toolbox
un saludo
-
Bueno no me hagas mucho caso,pero revisando por ciertas fuentes, me mencionaron que creara un hilo, en donde llamara un la funcion
DoModal() por ejemplo:
AfxBeginThread (MyFuncion );
MyFuncion(LPARAM a)
{
class b;
b.DoModal();
}
como sabras no se conozco mucho de los hilos, yo lo voy a probar en la noche, por que solo me dijeron la idea.
BYE.
-
:hola:A ver, yo lo he intentado y no me da ningun problema. Me he creado un proyecto con el asistente (he probado con MDI y SDI) y luego he cambiado el dialogo "About" para que fuese no modal. Lo unico que he hecho es crear una variable miembro de tipo CAboutDlg en la clase principal del proyecto (la que termina en App). Luego, en OnAppAbout, quitas la declaracion de la variable porque ahora es global para toda la clase, y cambias el DoModal por el Create(IDD_ABOUTBOX). Despues tienes que poner ShowWindow aunque esto no hace falta si en las propiedades del dialogo le pones que sea visible. Y funciona. Mientras no le des a OK no se esconde la ventana, y en la principal puedes tocar lo que quieras. :comp:
Lo unico, que para volver a abrir el dialogo despues de cerrarlo hay que cambiar una cosa: hay que sobreescribir ek metodo OnOk() de la clase CAboutDlg() y poner DestroyWindow(). Esto porque el metodo original llama a otra funcion que solo oculta la ventana, pero no la elimina; despues cuando vuelves a intentar crearla casca la aplicacion porque la ventana ya existe.