Aracılığıyla paylaş


COleControl::GetActivationPolicy

Destekleyen bir denetimin varsayılan etkinleştirme davranışını değiştirir IPointerInactive arabirimi.

virtual DWORD GetActivationPolicy( );

Dönüş Değeri

Bayrakları birlikte POINTERINACTIVE numaralandırma. Olası bayraklar şunlardır:

  • POINTERINACTIVE_ACTIVATEONENTRY
    Nesneyi yerinde fare, fare taşıma işlemi sırasında girdiğinde etkinleştirilmiş olması gerekir.

  • POINTERINACTIVE_DEACTIVATEONLEAVE
    Fareyi fare taşıma işlemi sırasında nesne ayrıldığında nesne etkinliği.

  • POINTERINACTIVE_ACTIVATEONDRAG
    Nesne, yerinde farenin üzerine sürükleme sırasında sürüklendiğinde etkinleştirilmiş olması ve işlem bırakın.

Notlar

Zaman IPointerInactive arabirim etkinleştirildiğinde, kapsayıcıyı temsil WM_SETCURSOR ve WM_MOUSEMOVE , iletileri. COleControlKullanıcının bu arabirimi uygulaması bu iletiler, denetimin ileti Eşleme aracılığıyla fare ayarlama uygun şekilde koordine sonra gönderme.

Her konteyner alır bir WM_SETCURSOR veya WM_MOUSEMOVE destekleyen etkin nesne üzerinde fare işaretçisiyle ileti IPointerInactive, çağırması gerekir GetActivationPolicy arabirimi ve dönüş bayraklarını POINTERINACTIVE numaralandırma.

İleti Haritası'na karşılık gelen girdileri ekleyerek bu iletilerin sıradan pencere iletilerinin gibi işlemleri gerçekleştirebilir. İşleyicileri kullanmaktan m_hWnd üye değişkeni (ya da onu kullanan herhangi bir üye işlevler) olmadan ilk değeri olmayan denetimi-null.

Herhangi bir nesnenin hedeflenen ve / birden fazla fare imlecini ayarlamak veya fare taşıma olayı gibi özel görsel geribildirim vermek gibi döndürmesi gereken POINTERINACTIVE_ACTIVATEONENTRY bayrak ve yalnızca etkin olduğunda görüş çizin. Nesne bu bayrak dönerse, konteyner yerinde hemen etkinleştirmek ve sonra çağrısı tetiklenen aynı iletiyi iletmek GetActivationPolicy.

Her ikisi de, POINTERINACTIVE_ACTIVATEONENTRY ve POINTERINACTIVE_DEACTIVATEONLEAVE bayrakları döndürülür, daha sonra fareyi bir nesnenin üzerine geldiğinde, yalnızca nesnenin etkinleştirilecektir. Yalnızca POINTERINACTIVE_ACTIVATEONENTRY bayrak döndürüldüğünde, daha sonra fareyi nesneyi ilk girdiğinde bir kez nesnesi yalnızca etkinleştirilecek.

Hedefi, ole sürükle ve bırak işlemi etkin olmayan bir denetimi de isteyebilirsiniz. Bu denetimin pencere bırakma hedefi olarak kaydedilmesi için kullanıcının bir nesneyi onun üzerinden sürüklediğinde anda denetimi etkinleştirme gerektirir. Sürükleme sırasında gerçekleşmesi etkinleştirme neden dönmek POINTERINACTIVE_ACTIVATEONDRAG bayrak:

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

İletilen bilgileri tarafından GetActivationPolicy konteyner tarafından önbelleğe alınması değil. Bunun yerine, etkin olmayan bir nesne fare girdiği her zaman bu yöntemi çağrılmalıdır.

Etkin nesneyi yerinde fare girdiğinde etkinleştirilmiş olmasını istemezse kapsayıcısının sonraki gönderme WM_SETCURSOR çağırarak bu nesneye iletilerini OnInactiveSetCursor fare işaretçisini nesnenin üzerinde kalır sürece.

Etkinleştirme IPointerInactive arabirimi genellikle anlamına gelir, denetimin her zaman fare iletileri işleyebilme yeteneği olmasını istediğiniz. Bu eden desteklemeyen bir kapsayıcı almak için IPointerInactive arabirimi, denetiminizi her zaman görünür olduğunda, etkin olması gerekir da denetimi anlamına olmalıdır OLEMISC_ACTIVATEWHENVISIBLE çeşitli bayraklarının arasında bayrak. Ancak, bu bayrak dan önlemek için etkili bir kapsayıcıdaki alma destek IPointerInactive, de belirtmeniz OLEMISC_IGNOREACTIVATEWHENVISIBLE bayrak:

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

Gereksinimler

Başlık: afxctl.h

Ayrıca bkz.

Başvuru

COleControl sınıfı

Hiyerarşi grafik

COleControl::OnInactiveSetCursor

COleControl::OnInactiveMouseMove