Wyłączanie opcji aktywacji w przypadku widoczności
Kontrolka ma dwa podstawowe stany: aktywne i nieaktywne. Tradycyjnie te stany były rozróżniane przez to, czy kontrolka miała okno. Aktywna kontrolka miała okno; nieaktywna kontrolka nie. Wraz z wprowadzeniem aktywacji bez okien rozróżnienie to nie jest już uniwersalne, ale nadal ma zastosowanie do wielu kontrolek.
W porównaniu z resztą inicjowania zwykle wykonywane przez kontrolkę ActiveX, tworzenie okna jest niezwykle kosztowną operacją. Najlepiej, aby kontrolka odroczała tworzenie okna, dopóki nie będzie to absolutnie konieczne.
Wiele kontrolek nie musi być aktywnych przez cały czas, gdy są widoczne w kontenerze. Często kontrolka może pozostać w stanie nieaktywnym, dopóki użytkownik nie wykona operacji wymagającej jej aktywności (na przykład kliknięcie za pomocą myszy lub naciśnięcie klawisza TAB). Aby spowodować, że kontrolka pozostanie nieaktywna do momentu aktywowania kontenera, usuń flagę OLEMISC_ACTIVATEWHENVISIBLE z różnych flag kontrolki:
static const DWORD BASED_CODE _dwNVC_MFC_AxOptOleMisc =
OLEMISC_SETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;
Flaga OLEMISC_ACTIVATEWHENVISIBLE zostanie automatycznie pominięta, jeśli wyłączysz opcję Aktywuj po wyświetleniu na stronie Kontrolka Ustawienia Kreatora formantu ActiveX MFC podczas tworzenia kontrolki.