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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top