Compartilhar via


Desativando a opção Ativar Quando Visível

Um controle tem dois estados básicos: ativo e inativo. Tradicionalmente, esses estados se distinguiam pelo fato de o controle ter ou não uma janela. Um controle ativo tinha uma janela; um controle inativo não. Com a introdução da ativação sem janelas, essa distinção não é mais universal, mas ainda se aplica a muitos controles.

Em comparação ao restante da inicialização normalmente executada por um controle ActiveX, a criação de uma janela é uma operação extremamente cara. Idealmente, um controle adiaria a criação de sua janela até que ela fosse absolutamente necessária.

Muitos controles não precisam estar ativos o tempo todo em que ficam visíveis em um contêiner. Muitas vezes, um controle pode permanecer no estado inativo até que o usuário execute uma operação que exija que ele se torne ativo (por exemplo, clicar com o mouse ou pressionar a tecla TAB). Para fazer com que um controle permaneça inativo até que o contêiner precise ativá-lo, remova o sinalizador OLEMISC_ACTIVATEWHENVISIBLE dos diversos sinalizadores do controle:

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

O sinalizador OLEMISC_ACTIVATEWHENVISIBLE será omitido automaticamente se você desativar a opção Ativar Quando Visível na página Configurações de Controle do Assistente de Controle ActiveX do MFC ao criar seu controle.

Confira também

Controles ActiveX do MFC: otimização