Come creare una finestra non interattiva in MFC
-
09-06-2019 - |
Domanda
Nella mia applicazione ho una finestra che visualizzo con piccoli messaggi (simile al tooltip).Questa finestra utilizza gli attributi a livelli per disegnare sfondi alfa ecc.
Se ho più di queste finestre aperte contemporaneamente e faccio clic su una con il mouse, quando scompaiono fanno sì che la mia applicazione perda il focus (passa al focus sull'app dietro quella corrente).
Come posso interrompere qualsiasi interazione nella mia finestra?
Soluzione 2
Dopo aver giocato con il WM_NCACTIVATE
messaggio senza fortuna, ho sovrascritto il file WM_SETFOCUS
Messaggio:
void CMyWindow::OnSetFocus(CWnd* pOldWnd)
{
if (pOldWnd != NULL)
{
pOldWnd->SetFocus();
}
}
Sembra che funzioni.Non ho idea del perché funzioni però!Sono graditi commenti su questo argomento.
Altri suggerimenti
Funziona perché OnSetFocus (come molti dei metodi On*) ti dà la possibilità di anticipare un'azione prima che si verifichi effettivamente.Lo stato attivo non passa mai effettivamente alla finestra non interattiva.