COleControl::GetActivationPolicy
Modifica il comportamento predefinito di attivazione di un controllo che supporta l'interfaccia IPointerInactive.
virtual DWORD GetActivationPolicy( );
Valore restituito
Una combinazione di flag dall'enumerazione POINTERINACTIVE.i flag possibili sono:
POINTERINACTIVE_ACTIVATEONENTRY
L'oggetto deve essere disponibile solo quando il mouse si sposta durante l'operazione di spostamento del mouse.POINTERINACTIVE_DEACTIVATEONLEAVE
L'oggetto dovrebbe essere disabilitato quando il mouse lascia l'oggetto durante l'operazione di spostamento del mouse.POINTERINACTIVE_ACTIVATEONDRAG
L'oggetto deve essere disponibile attivato quando si trascina il mouse durante l'operazione di trascinamento.
Note
Quando l'interfaccia IPointerInactive è abilitata, il contenitore delegherà WM_SETCURSOR e messaggi WM_MOUSEMOVE.l'implementazione di COleControl di questa interfaccia invierà questi messaggi tramite la mappa messaggi del controllo, dopo avere modificato le coordinate del mouse in modo appropriato.
Ogni volta che il contenitore riceve un messaggio WM_MOUSEMOVE o WM_SETCURSOR con il puntatore del mouse su un oggetto inattivo che supporta IPointerInactive, deve chiamare GetActivationPolicyinterfaccia e restituire i flag dell'enumerazione POINTERINACTIVE.
È possibile elaborare i messaggi come messaggi comuni della finestra, aggiungendo voci corrispondenti alla mappa messaggi.Nei gestori, evitare di utilizzare la variabile membro m_hWnd (o funzioni membro che lo utilizza) senza prima verificare che il valore èNULLnon.
Qualsiasi oggetto inteso per rendere più del cursore del mouse e/o generato un evento di spostamento del mouse, come feedback visivo speciale dell'utente, deve restituire il flag POINTERINACTIVE_ACTIVATEONENTRY e disegnare il feedback solo quando attivo.Se l'oggetto restituisce questo flag, il contenitore necessario attivarlo in posizione immediatamente e inoltrarlo lo stesso messaggio che ha attivato la chiamata a GetActivationPolicy.
Se è POINTERINACTIVE_ACTIVATEONENTRY di flag POINTERINACTIVE_DEACTIVATEONLEAVE viene restituito, l'oggetto verrà attivato solo quando il mouse si trova sull'oggetto.Se solo il flag POINTERINACTIVE_ACTIVATEONENTRY viene restituito, l'oggetto verrà attivato solo una volta quando il mouse viene portato all'oggetto.
È inoltre necessario un controllo inattivo per essere la destinazione di un'operazione di trascinamento della selezione OLE.Questo richiede l'attivazione del controllo dal momento che l'utente sposta un oggetto su, in modo che la finestra del controllo può essere registrata come destinazione di trascinamento.Per impedire l'attivazione di verificare durante il trascinamento, restituire il flag POINTERINACTIVE_ACTIVATEONDRAG :
DWORD CMyAxCtrl::GetActivationPolicy()
{
return POINTERINACTIVE_ACTIVATEONDRAG;
}
Le informazioni passate da GetActivationPolicy non devono essere memorizzate nella cache da un contenitore.Invece, questo metodo deve essere chiamato ogni volta che il mouse entra in un oggetto inattivo.
Se l'oggetto inattivo non richiede essere disponibile solo quando il mouse si sposta, il relativo contenitore deve inviare messaggi successivi WM_SETCURSOR a questo oggetto chiamando OnInactiveSetCursor finché il puntatore del mouse rimane l'oggetto.
Attivare l'interfaccia IPointerInactive indica in genere che si desidera disporre il controllo sia in grado dei messaggi del mouse di elaborazione.Per ottenere questo comportamento in un contenitore che non supporta l'interfaccia IPointerInactive, sarà necessario avere il controllo attivato sempre una volta visibile, che indica che il controllo deve avere il flag OLEMISC_ACTIVATEWHENVISIBLE tra i vari flag.Tuttavia, per evitare questo flag da rendere effettive in un contenitore che supporta IPointerInactive, è anche possibile specificare il flag OLEMISC_IGNOREACTIVATEWHENVISIBLE :
static const DWORD BASED_CODE _dwMyOleMisc =
OLEMISC_ACTIVATEWHENVISIBLE |
OLEMISC_IGNOREACTIVATEWHENVISIBLE |
OLEMISC_SETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;
Requisiti
Header: afxctl.h