Dela via


Inaktivera alternativet Aktivera när det är synligt

En kontroll har två grundläggande tillstånd: aktiv och inaktiv. Traditionellt särskiljdes dessa stater av om kontrollen hade ett fönster. En aktiv kontroll hade ett fönster. en inaktiv kontroll gjorde det inte. Med införandet av fönsterlös aktivering är den här skillnaden inte längre universell, men gäller fortfarande för många kontroller.

Jämfört med resten av initieringen som vanligtvis utförs av en ActiveX-kontroll är skapandet av ett fönster en extremt dyr åtgärd. Helst skulle en kontroll skjuta upp skapandet av dess fönster tills det är absolut nödvändigt.

Många kontroller behöver inte vara aktiva hela tiden de visas i en container. Ofta kan en kontroll förbli i inaktivt tillstånd tills användaren utför en åtgärd som kräver att den blir aktiv (till exempel genom att klicka med musen eller trycka på TABB-tangenten). Om du vill att en kontroll ska förbli inaktiv tills containern behöver aktivera den tar du bort flaggan OLEMISC_ACTIVATEWHENVISIBLE från kontrollens diverse flaggor:

static const DWORD BASED_CODE _dwNVC_MFC_AxOptOleMisc =
    OLEMISC_SETCLIENTSITEFIRST |
    OLEMISC_INSIDEOUT |
    OLEMISC_CANTLINKINSIDE |
    OLEMISC_RECOMPOSEONRESIZE;

Flaggan OLEMISC_ACTIVATEWHENVISIBLE utelämnas automatiskt om du inaktiverar alternativet Aktivera när synligt på sidan Kontrollinställningar i guiden MFC ActiveX-kontroll när du skapar kontrollen.

Se även

MFC ActiveX-kontroller: Optimering