Freigeben über


COleControl::GetActivationPolicy

Ändert das standardmäßige Aktivierungsverhalten eines Steuerelements, das die IPointerInactive-Schnittstelle unterstützt.

virtual DWORD GetActivationPolicy( );

Rückgabewert

Eine Kombination von Flags POINTERINACTIVE aus der Enumeration.Mögliche Flags sind:

  • POINTERINACTIVE_ACTIVATEONENTRY
    Das Objekt sollte direkt aktiviert sein, wenn die Maus es während eines Mausverschiebungsvorgangs eingibt.

  • POINTERINACTIVE_DEACTIVATEONLEAVE
    Das Objekt sollte deaktiviert werden, wenn die Maus das Objekt während eines Mausverschiebungsvorgangs können.

  • POINTERINACTIVE_ACTIVATEONDRAG
    Das Objekt sollte direkt aktiviert sein, wenn die Maus über diese während eines Drag & Drop-Vorgangs gezogen wird.

Hinweise

Wenn die IPointerInactive-Schnittstelle aktiviert ist, delegiert der Container WM_SETCURSOR und WM_MOUSEMOVE Meldungen dorthin.Die COleControl-Implementierung dieser Schnittstelle leitet diese Meldungen durch die Meldungszuordnung des Steuerelements weiter nach, die Mauskoordinaten entsprechend anpassen.

Sobald der Container eine WM_SETCURSOR oder WM_MOUSEMOVE Nachricht mit dem Mauszeiger auf einem inaktiven Objekt empfängt, das IPointerInactive unterstützt, sollte er GetActivationPolicy auf der Schnittstelle aufrufen und Flags von der POINTERINACTIVE-Enumeration zurückgeben.

Sie können diese Meldungen wie gewöhnliche Fenstermeldungen verarbeiten, indem Sie die entsprechenden Einträgen zur Meldungszuordnung hinzufügen.In den Handlern vermeiden Sie, die m_hWnd-Membervariable (oder eines Memberfunktionen, das sie verwendet), ohne erste Überprüfung zu verwenden, dass der Wert Nicht --NULL ist.

Jedes Objekt, das vorgesehen ist, mehrere auszuführen, fügen Sie den Mauszeiger fest und/oder löst ein MouseMove-Ereignis, wie geben bestimmtes visuelles Feedback aus, sollten das POINTERINACTIVE_ACTIVATEONENTRY-Flag zurückgeben und das Feedback zeichnen, nur als aktiv.Wenn das Objekt dieses Flag zurückgibt, sollte der Container ermöglichen es sofort direkt übergeben und anschließend die gleiche Meldung, die den Aufruf von GetActivationPolicy ausgelöst hat.

Wenn POINTERINACTIVE_ACTIVATEONENTRY und POINTERINACTIVE_DEACTIVATEONLEAVE-Flags zurückgegeben werden, ist das Objekt nur aktiviert, wenn die Maus über das Objekt ist.Wenn nur das POINTERINACTIVE_ACTIVATEONENTRY-Flag zurückgegeben wird, ist das Objekt nur einmal aktiviert, wenn die Maus zuerst das Objekt eingibt.

Sie können auch ein inaktives Steuerelement das Ziel eines Drag & Drop-Vorgangs sein.Dies erfordert das Aktivieren des Steuerelements, in dem Augenblick als der Benutzer ein Objekt darüber zieht, sodass das Fenster des Steuerelements als Ablageziel registriert werden kann.Um Aktivierung wird während eines Ziehvorgangs fungiert, geben Sie das POINTERINACTIVE_ACTIVATEONDRAG-Flag zurück:

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

Die Informationen, die von GetActivationPolicy übermittelt werden, sollten nicht durch einen Container zwischengespeichert werden.Stattdessen sollte diese Methode aufgerufen werden, wenn die Maus ein inaktives Objekt eingibt.

Wenn ein inaktives Objekt nicht anfordert, um direkt zu aktiviert sein, wenn die Maus es eingibt, sollte sein Container folgende WM_SETCURSOR Meldungen an diesem Objekt ausliefern, indem er OnInactiveSetCursor aufruft, solange der Mauszeiger über dem Objekt bleibt.

Die IPointerInactive-Schnittstelle zu aktivieren bedeutet normalerweise, dass Sie das Steuerelement an Mausmeldungen jederzeit verarbeiten enthalten sein soll.Um dieses Verhalten in einem Container abzurufen der nicht die IPointerInactive-Schnittstelle unterstützt, müssen Sie das Steuerelement, das immer wenn sichtbar aktiviert ist, das heißt dass das Steuerelement das OLEMISC_ACTIVATEWHENVISIBLE-Flag unter den verschiedenen Flags haben soll.Um das zu verhindern dass dieses Flag in einem Container, der IPointerInactive unterstützt, können Sie das OLEMISC_IGNOREACTIVATEWHENVISIBLE-Flag auch angeben wirksam wird:

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

Anforderungen

Header: afxctl.h

Siehe auch

Referenz

COleControl-Klasse

Hierarchien-Diagramm

COleControl::OnInactiveSetCursor

COleControl::OnInactiveMouseMove