Partilhar via


COleControl::GetActivationPolicy

Altera o comportamento padrão de ativação de um controle que oferece suporte a interface de IPointerInactive .

virtual DWORD GetActivationPolicy( );

Valor de retorno

Uma combinação de sinalizadores da enumeração de POINTERINACTIVE .Os sinalizadores possíveis são:

  • POINTERINACTIVE_ACTIVATEONENTRY
    O objeto deve ser ativado no lugar quando o mouse o incorpora durante uma operação de movimentação do mouse.

  • POINTERINACTIVE_DEACTIVATEONLEAVE
    O objeto deve ser desativado quando o mouse deixa o objeto durante uma operação de movimentação do mouse.

  • POINTERINACTIVE_ACTIVATEONDRAG
    O objeto deve ser ativado no lugar quando o mouse é arrastada sobre ele durante uma operação de arrastar e soltar.

Comentários

Quando a interface de IPointerInactive estiver ativada, o recipiente delegar-lhe-á WM_SETCURSOR e mensagens de WM_MOUSEMOVE .A implementação de COleControl de esta interface despachará essas mensagens através do mapa de mensagem do seu controle, após definir as coordenadas do mouse adequadamente.

Sempre que o recipiente recebe uma mensagem de WM_SETCURSOR ou de WM_MOUSEMOVE com o ponteiro do mouse sobre um objeto inativo que suporta IPointerInactive, deve chamar GetActivationPolicy nos sinalizadores da interface e de retorno da enumeração de POINTERINACTIVE .

Você pode processar as mensagens apenas como mensagens comuns da janela, adicionando entradas correspondentes no mapa de mensagem.Em seus manipuladores, evite usar a variável de membro de m_hWnd (ou algumas funções de membro que o usa) sem primeiro verificar que o valor éNULOnão-.

Qualquer objeto deve fazer mais que define o cursor do mouse e/ou aciona um evento de mudança do mouse, como fornece retornos visuais especiais, deve retornar o sinalizador de POINTERINACTIVE_ACTIVATEONENTRY e desenhar comentários apenas quando ativo.Se o objeto retorna este sinalizador, o contêiner deve toggle imediatamente no lugar e então ele frente a mesma mensagem que disparou a chamada a GetActivationPolicy.

Se POINTERINACTIVE_ACTIVATEONENTRY e sinalizadores de POINTERINACTIVE_DEACTIVATEONLEAVE é retornado, o objeto será ativado somente quando o mouse está sobre o objeto.Se apenas o sinalizador de POINTERINACTIVE_ACTIVATEONENTRY é retornado, o objeto será ativado apenas uma vez quando o mouse entra primeiro o objeto.

Você também pode querer um controle inativo para ser o destino de um arrastar e soltar OLE para a operação.Isso requer ativar o controle no momento em que o usuário arrasta um objeto sobre ele, de modo que a janela de controle pode ser registrada como um destino alvo.Para fazer com que a ativação ocorre durante um arrastar, retornar o sinalizador de POINTERINACTIVE_ACTIVATEONDRAG :

DWORD CMyAxCtrl::GetActivationPolicy()
{
    return POINTERINACTIVE_ACTIVATEONDRAG;
}

Informações comunicada por GetActivationPolicy não deve ser armazenada em cache por um recipiente.Em vez de isso, esse método deve ser chamado sempre que o mouse entra com um objeto inativo.

Se um objeto inativo não solicitar para ser ativado no lugar quando o mouse o inserir, seu contêiner deve despachar mensagens subseqüentes de WM_SETCURSOR a esse objeto chamando OnInactiveSetCursor quando o ponteiro do mouse permanece sobre o objeto.

Ativar a interface de IPointerInactive normalmente significa que você deseja que o controle seja capaz de mensagens do mouse de processamento em cada vez.Para obter esse comportamento em um contêiner que não oferece suporte a interface de IPointerInactive , você precisará ter ativado quando o controle sempre visível, o que significa que o controle deve ter o sinalizador de OLEMISC_ACTIVATEWHENVISIBLE entre os sinalizadores diversos.Em o entanto, para impedir que este sinalizador tenham efeito em um contêiner que suporte IPointerInactive, você também pode especificar o sinalizador de OLEMISC_IGNOREACTIVATEWHENVISIBLE :

static const DWORD BASED_CODE _dwMyOleMisc =
    OLEMISC_ACTIVATEWHENVISIBLE |
    OLEMISC_IGNOREACTIVATEWHENVISIBLE |
    OLEMISC_SETCLIENTSITEFIRST |
    OLEMISC_INSIDEOUT |
    OLEMISC_CANTLINKINSIDE |
    OLEMISC_RECOMPOSEONRESIZE;

Requisitos

Cabeçalho: afxctl.h

Consulte também

Referência

Classe de COleControl

Gráfico de hierarquia

COleControl::OnInactiveSetCursor

COleControl::OnInactiveMouseMove