COleControl::GetActivationPolicy
Modifica el comportamiento predeterminado de activación de un control que admita la interfaz de IPointerInactive .
virtual DWORD GetActivationPolicy( );
Valor devuelto
Una combinación de marcadores de enumeración de POINTERINACTIVE .Los indicadores son:
POINTERINACTIVE_ACTIVATEONENTRY
El objeto debe estar en contexto se produce cuando el mouse se entra en durante una operación de mover el mouse.POINTERINACTIVE_DEACTIVATEONLEAVE
El objeto debe desactivar cuando el mouse abandona el objeto durante una operación de mover el mouse.POINTERINACTIVE_ACTIVATEONDRAG
El objeto debe estar en contexto se produce cuando el mouse se arrastra a él durante una operación de arrastrar y colocar.
Comentarios
Cuando se habilita la interfaz de IPointerInactive , el contenedor delegará WM_SETCURSOR y los mensajes de WM_MOUSEMOVE al.la implementación de los entity_COleControl de esta interfaz envía estos mensajes a través del mapa de mensajes del control, después de ajustar las coordenadas del mouse correctamente.
Siempre que el contenedor recibe un mensaje de WM_SETCURSOR o de WM_MOUSEMOVE con el puntero del mouse sobre un objeto inactivo que admite IPointerInactive, debe llamar a GetActivationPolicy en la interfaz y devolver los marcadores de enumeración de POINTERINACTIVE .
Puede procesar estos mensajes como mensajes normales de la ventana, agregando las entradas correspondientes al mapa de mensajes.En los controladores, evite utilizar la variable miembro de m_hWnd (o a cualquier miembro funciona que lo utiliza) sin comprobar primero que su valor no es null.
Cualquier objeto diseñado para hacer más que el cursor y/o desencadena un evento de mover el mouse, por ejemplo proporciona comentarios visuales especial, debe devolver el indicador de POINTERINACTIVE_ACTIVATEONENTRY y dibujar comentarios sólo cuando está activo.Si el objeto devuelve este marcador, el contenedor debe tratarlo en contexto inmediatamente y después hacia el mismo mensaje que activó la llamada a GetActivationPolicy.
Si se devuelve POINTERINACTIVE_ACTIVATEONENTRY e indicadores de POINTERINACTIVE_DEACTIVATEONLEAVE , el objeto se producirá cuando el mouse está sobre el objeto.Si solo se devuelve el mensaje de POINTERINACTIVE_ACTIVATEONENTRY , el objeto se producirá una sola vez cuando el mouse primero entra en el objeto.
Puede que también desee un control inactivo para ser el destino de una operación de arrastrar y colocar de OLE.Esto requiere generar el control en el momento en que el usuario arrastra un objeto encima, para poder registrar la ventana de control como destino.Para hacer la activación para producir durante una operación de arrastrar, devuelva el indicador de POINTERINACTIVE_ACTIVATEONDRAG :
DWORD CMyAxCtrl::GetActivationPolicy()
{
return POINTERINACTIVE_ACTIVATEONDRAG;
}
Información comunicada por GetActivationPolicy no se debe almacenar en memoria caché mediante un contenedor.En su lugar, se debe llamar a este método cada vez que el mouse entra en un objeto inactivo.
Si un objeto inactivo no solicita esté en contexto se produce cuando el mouse se entra en, su contenedor debe enviar los mensajes subsiguientes de WM_SETCURSOR a este objeto llamando a OnInactiveSetCursor mientras el puntero del mouse se mantiene sobre el objeto.
Habilitar la interfaz de IPointerInactive significa normalmente que desea que el control sea capaz de mensajes del mouse de procesamiento siempre.Para obtener este comportamiento en un contenedor que no admite la interfaz de IPointerInactive , deberá tener el control se genera cuando está visible, que significa que el control debe tener el indicador de OLEMISC_ACTIVATEWHENVISIBLE entre los marcadores diferentes.Sin embargo, para evitar que este marcador surta efecto en un contenedor que admite IPointerInactive, también puede especificar la marca de OLEMISC_IGNOREACTIVATEWHENVISIBLE :
static const DWORD BASED_CODE _dwMyOleMisc =
OLEMISC_ACTIVATEWHENVISIBLE |
OLEMISC_IGNOREACTIVATEWHENVISIBLE |
OLEMISC_SETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;
Requisitos
encabezado: afxctl.h