COleControl::GetActivationPolicy
Mění výchozí chování aktivace ovládacího prvku, který podporuje IPointerInactive rozhraní.
virtual DWORD GetActivationPolicy( );
Vrácená hodnota
Kombinace příznaků z POINTERINACTIVE výčtu.Možné příznaky jsou:
POINTERINACTIVE_ACTIVATEONENTRY
Objekt musí být aktivován myší zadá během přesunutí myši v místě.POINTERINACTIVE_DEACTIVATEONLEAVE
Objekt by deaktivován, když ukazatel myši opustí objekt během přesunutí myši.POINTERINACTIVE_ACTIVATEONDRAG
Objekt by místo aktivována při přetažení myší nad ním během tažení a operaci přetažení.
Poznámky
Když IPointerInactive rozhraní je povoleno, bude delegování kontejneru WM_SETCURSOR a WM_MOUSEMOVE zprávy ji.COleControlna provádění tohoto rozhraní bude odeslání těchto zpráv prostřednictvím ovládacího prvku zprávy mapy, po nastavení myši souřadnice správně.
Kdykoli obdrží kontejner WM_SETCURSOR nebo WM_MOUSEMOVE zprávu s ukazatel myši aktivní objekt podporující IPointerInactive , by měl zavolat GetActivationPolicy na rozhraní a návrat příznaků z POINTERINACTIVE výčtu.
Přidáním odpovídající položky mapy zprávy můžete zpracovat tyto zprávy stejně jako běžná okna zprávy.Vaše obslužné rutiny, vyhněte se použití m_hWnd členské proměnné (nebo všechny členské funkce, které používá) bez první kontrola jeho hodnota je mimo-NULL.
Libovolný objekt určen více než nastavit ukazatel myši nebo generovat událost myši přesunout, takové jako poskytnout zvláštní vizuální zpětnou vazbu, měl vrátit POINTERINACTIVE_ACTIVATEONENTRY příznak a nakreslete názor pouze tehdy, když je aktivní.Objekt vrátí tento příznak, kontejner by ji na místě ihned aktivovat a předat dál stejnou zprávu, která aktivovala volání GetActivationPolicy .
Pokud oba POINTERINACTIVE_ACTIVATEONENTRY a POINTERINACTIVE_DEACTIVATEONLEAVE příznaky jsou vráceny, pak objekt bude aktivován pouze když je kurzor myši přes objekt.Pokud pouze POINTERINACTIVE_ACTIVATEONENTRY příznak je vrácena, pak objekt bude aktivován pouze jednou při myši nejprve zadá objektu.
Můžete také ovládací prvek neaktivní cíl přetažení OLE a operaci přetažení.To vyžaduje aktivaci ovládacího prvku v okamžiku, kdy uživatel přetáhne přes, objekt tak, aby okno ovládacího prvku lze registrovat jako cíl přetažení.Způsobit aktivace dochází během tažení návrat POINTERINACTIVE_ACTIVATEONDRAG příznak:
DWORD CMyAxCtrl::GetActivationPolicy()
{
return POINTERINACTIVE_ACTIVATEONDRAG;
}
Informace sdělované GetActivationPolicy by neměl být v mezipaměti kontejner.Místo toho tato metoda by měla být volána při každém vstupu myši aktivní objekt.
Pokud místo aktivováno přejde myší nepožaduje aktivní objekt, jeho kontejneru odesláním následné WM_SETCURSOR zprávy na tento objekt voláním OnInactiveSetCursor tak dlouho, dokud zůstane ukazatel myši přes objekt.
Povolení IPointerInactive rozhraní obvykle znamená, že ovládací prvek musí být po celou dobu zpracování zpráv myši.Získání tohoto chování v kontejneru, který nepodporuje IPointerInactive rozhraní, je nutné mít vždy aktivní, pokud je zobrazen ovládací prvek znamená ovládací prvek by měl mít OLEMISC_ACTIVATEWHENVISIBLE příznak mezi jeho různé příznaky.Však zabránit tento příznak z nabude účinku v kontejneru, který podporuje IPointerInactive , můžete také zadat OLEMISC_IGNOREACTIVATEWHENVISIBLE příznak:
static const DWORD BASED_CODE _dwMyOleMisc =
OLEMISC_ACTIVATEWHENVISIBLE |
OLEMISC_IGNOREACTIVATEWHENVISIBLE |
OLEMISC_SETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;
Požadavky
Záhlaví: afxctl.h