Partager via


COleControl::GetActivationPolicy

Modifie le comportement par défaut de l'activation d'un contrôle qui prend en charge l'interface d' IPointerInactive .

virtual DWORD GetActivationPolicy( );

Valeur de retour

Une combinaison des indicateurs de l'énumération de POINTERINACTIVE . Les indicateurs possibles :

  • POINTERINACTIVE_ACTIVATEONENTRY
    L'objet doit être sur place activée lorsque la souris entre dans l'pendant une opération de déplacement de la souris.

  • POINTERINACTIVE_DEACTIVATEONLEAVE
    L'objet doit être désactivé lorsque la souris quitte l'objet pendant une opération de déplacement de la souris.

  • POINTERINACTIVE_ACTIVATEONDRAG
    L'objet doit être sur place activée lorsque la souris fait glisser sur celle-ci pendant une opération de glisser-déplacer.

Notes

Lorsque l'interface d' IPointerInactive est activée, le conteneur délèguera WM_SETCURSOR et des messages d' WM_MOUSEMOVE lui. l'implémentation d'COleControl de cette interface acheminera ces messages dans la table des messages de votre contrôle, après avoir défini les coordonnées de la souris correctement.

Chaque fois que le conteneur reçoit un message d' WM_SETCURSOR ou d' WM_MOUSEMOVE avec le pointeur de la souris sur un objet inactif prise IPointerInactive, il doit appeler GetActivationPolicy sur l'interface et retourner des indicateurs de l'énumération de POINTERINACTIVE .

Vous pouvez traiter ces messages comme les messages des fenêtres ordinaires, en ajoutant les entrées correspondantes dans la table des messages. Dans vos gestionnaires, évitez d'utiliser la variable membre d' m_hWnd (ou toutes fonctions membres qui l'utilise) sans vérifier tout d'abord que sa valeur estNULLnon.

Tout objet destiné à être plus qu'un défini le curseur de la souris et/ou déclenche un événement de déplacement de la souris, tel que fournissent la rétroaction visuelle spéciale, doivent retourner la balise de POINTERINACTIVE_ACTIVATEONENTRY et dessiner des commentaires uniquement si actif. Si l'objet retourne cette balise, le conteneur doit les exécuter sur place immédiatement et la faire suivre le même message qui a déclenché l'appel à GetActivationPolicy.

Si POINTERINACTIVE_ACTIVATEONENTRY et des balises de POINTERINACTIVE_DEACTIVATEONLEAVE sont retournés, l'objet ne sera lancé lorsque la souris est positionnée sur l'objet. Si uniquement la balise de POINTERINACTIVE_ACTIVATEONENTRY est retournée, l'objet ne sera exécuté une fois lorsque la souris entre dans tout d'abord l'objet.

Vous pouvez également souhaiter un contrôle inactif à être la cible d'une opération de glisser-déplacer OLE. Il faut activer le contrôle au moment où l'utilisateur fait glisser un objet dessus, afin que la fenêtre du contrôle puisse être inscrite comme cible de déplacement. Pour provoquer l'activation pendant une opération de glissement, retournez la balise de POINTERINACTIVE_ACTIVATEONDRAG :

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

Les informations communiquées par GetActivationPolicy ne doivent pas être mises en cache par un conteneur. En revanche, cette méthode doit être appelée chaque fois que la souris entre dans un objet inactif.

Si un objet inactif ne le demande pas d'être visuelle activée lorsque la souris entre dans l', son conteneur doit distribuer les messages suivants d' WM_SETCURSOR à cet objet en appelant OnInactiveSetCursor tant que le pointeur de la souris reste sur l'objet.

L'activation de l'interface d' IPointerInactive signifie généralement que le contrôle soit capable de traiter les messages de la souris à tout moment. Pour obtenir ce comportement dans un conteneur qui ne prend pas en charge l'interface d' IPointerInactive , vous devrez peut-être votre contrôle toujours activée lorsque visible, ce qui signifie que le contrôle doit avoir l'indicateur d' OLEMISC_ACTIVATEWHENVISIBLE diverses parmi ses balises. Toutefois, pour empêcher cette balise de prendre l'effet dans un conteneur qui prend en charge IPointerInactive, vous pouvez également spécifier la balise d' OLEMISC_IGNOREACTIVATEWHENVISIBLE :

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

Configuration requise

Header: afxctl.h

Voir aussi

Référence

COleControl, classe

Graphique de la hiérarchie

COleControl::OnInactiveSetCursor

COleControl::OnInactiveMouseMove