Disattivazione dell'opzione Attivo quando visibile
Un controllo presenta due stati di base: attivo e inattivo. Tradizionalmente, questi stati si distinguevano a seconda che il controllo avesse o meno una finestra. Un controllo attivo aveva una finestra; un controllo inattivo invece no. Con l'introduzione dell'attivazione senza finestra, questa differenza non è più universale, ma è ancora valida per molti controlli.
Rispetto al resto dell'inizializzazione eseguita in genere da un controllo ActiveX, la creazione di una finestra è un'operazione estremamente costosa. Idealmente, un controllo rinvierebbe la creazione della finestra fino a quando non è assolutamente necessario.
Molti controlli non devono essere attivi per tutto il tempo in cui sono visibili in un contenitore. Spesso, un controllo può rimanere nello stato inattivo fino a quando l'utente non esegue un'operazione che richiede che diventi attiva (ad esempio, facendo clic con il mouse o premendo tabulazione). Per fare in modo che un controllo rimanga inattivo fino a quando il contenitore non deve attivarlo, rimuovere il flag OLEMISC_ACTIVATEWHENVISIBLE dai flag vari del controllo:
static const DWORD BASED_CODE _dwNVC_MFC_AxOptOleMisc =
OLEMISC_SETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;
Il flag OLEMISC_ACTIVATEWHENVISIBLE viene omesso automaticamente se si disattiva l'opzione Attiva quando visibile nella pagina Controllo Impostazioni della Creazione guidata controllo ActiveX MFC quando si crea il controllo.