dialoghi sempre-in-front
-
09-09-2019 - |
Domanda
C'è un modo per creare un non modale finestra di dialogo in C ++ MFC che rimane sempre in cima alle altre finestre nell'applicazione? Sto pensando un po 'come la finestra di dialogo Trova in Visual Studio 2005 -. Dove si rimane in cima, ma è ancora possibile modificare il testo sottostante
(se si fa alcuna differenza, non è MDI, è un app di dialogo-based)
Soluzione
Nish :
Rendere il vostro soggiorno finestra sulla parte superiore
Non hai visto i programmi che hanno un'opzione "sempre-stay-on-top"? Bene la cosa incredibile è che si può rendere il vostro soggiorno finestra sulla parte superiore con un solo una riga di codice. In poche parole la seguente riga nella classe della finestra di dialogo OnInitDialog () la funzione.
SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
In sostanza quello che stiamo facendo è quello di utilizzare le SetWindowPos funzione per modificare Z-ordine della nostra finestra di dialogo. Noi rendere il nostro dialogo soggiorno in cima a tutte altre finestre spostando al top di Z-ordine. Ora anche voi quando attivare qualche altra finestra, la nostra finestra sarà rimanere in cima. Ma vi consiglio per essere sicuri di sapere esattamente cosa si stanno facendo quando si esegue questa operazione, perché potrebbe infastidire la gente se non possono ottenere la finestra di mezzo, quando volerlo fare.
Come lei ha ricordato nei commenti, la riga sopra rende la finestra sedersi sulla cima di ogni applicazione. Avrai bisogno di fare
SetWindowPos(&this->wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
Per effettuare una finestra di sedersi sulla parte superiore del solo vostra applicazione.
-Adam
Altri suggerimenti
La risposta accettata fallisce per Windows 7 o superiore. (O forse il suo me) Ma fare la finestra di dialogo non modale come comparsa, invece di bambino lo risolve. Ora viene posizionato finestra di dialogo principale WRT, ma è possibile scrivere codice per vincolare ovunque. Utilizzando il nessun bordo o barra in alto lo rende una semplice finestra.