Pregunta

¿Hay una manera de crear un modal cuadro de diálogo en C ++ MFC que siempre permanece encima de las demás ventanas de la aplicación? Estoy pensando en algo así como el diálogo Buscar en Visual Studio 2005 -. Donde permanece en la parte superior, pero todavía se puede editar el texto subyacente

(Si hace alguna diferencia, no es MDI, es una aplicación basada en diálogos)

¿Fue útil?

Solución

Nish :

  

La fabricación de su estancia en la parte superior de diálogo

     

¿No has visto programas que tienen   una opción "siempre-stay-on-top"? Bien   lo increíble es que se puede   hacer que su estancia en la parte superior de diálogo con sólo   una línea de código. En pocas palabras el   siguiente línea en la clase de diálogo de   OnInitDialog () función.

SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
     

Básicamente lo que estamos haciendo es utilizar   los SetWindowPos función para cambiar   el orden Z de la ventana de diálogo. Nosotros   hacer que nuestra estancia de diálogo por encima de todo   otras ventanas moviendo a la cima   de la Z-orden. Ahora bien, aun cuando   activar alguna otra ventana, la ventana   se quedará en la parte superior. Pero te aconsejo   para asegurarse de que sabe exactamente lo que   están haciendo cuando se hace esto, porque   podría molestar a la gente si no pueden conseguir   la ventana fuera del camino cuando   querer hacer eso.

Como se ha mencionado en los comentarios, por encima de la línea hace que la ventana se sientan en la parte superior de cada aplicación. Tendrá que hacer

SetWindowPos(&this->wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

Para hacer una ventana de sentarse en la parte superior de la única aplicación.

-Adán

Otros consejos

La respuesta aceptada falla para Windows 7 o superior. (O tal vez soy yo) Sin embargo, hacer el diálogo no modal como emergente en lugar de niño lo resuelve. Ahora se posiciona ventana de diálogo principal WRT pero se puede escribir código para limitar cualquier lugar. Usando el borde o sin barra superior hace que sea una simple ventana.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top