Dialogo Modal

04/12/2003 - 16:33 por Gonzalo Painemil M. | Informe spam
Como hacer que un dialogo modal quede siempre sobre cualquier otro cuadro...

En los no modales lo he podico hacer con
SetWindowPos(&wndTopMost,381,492,0,0,SWP_NOSIZE);

pero si tengo una ventana no modal con esta caracteristica y abro una
ventana modal... esta ultima queda tapada... como evitar eso...

Gracias
 

Leer las respuestas

#1 Rodrigo Corral González
05/12/2003 - 10:11 | Informe spam
Hay que usar el api SetWindowPos de la siguente manera:

Para hacer la ventan siempre visible

SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE |
WP_NOSIZE);

Para devolverle el comportamiento normal

SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE
| WP_NOSIZE);

Si estas trabajando en MFC la función SetWindowPos sera miembro de la clase
que representa tu ventana.

En tu caso el problema creo que es que al lanzar la ventana modal desde el
dialogo no modal, el no modal pasa a ser padre del modal y como el modal
pasa a tener el foco es por eso que el no modal se oculta aunque sea
'topmost'.

Se me ocurre que si haces que el padre de ambos dialogos sea el desktop el
comportamiento será el que tu esperas. Pero no estoy seguro.

Un saludo.
Rodrigo Corral González

Preguntas similares