Poskytuje interakce myši při neaktivní
Pokud ovládací prvek není aktivována okamžitě, stále můžete jej zpracovat WM_SETCURSOR a WM_MOUSEMOVE , i když ovládací prvek nemá žádné okno vlastní zprávy.To lze provést povolením COleControljeho provádění IPointerInactive rozhraní, které je ve výchozím nastavení zakázána.(Viz ActiveX SDK popis rozhraní.) Chcete-li ji povolit pointerInactive příznak v sadě vrácené příznaky COleControl::GetControlFlags:
DWORD CMyAxOptCtrl::GetControlFlags()
{
DWORD dwFlags = COleControl::GetControlFlags();
...
// The control can receive mouse notifications when inactive.
dwFlags |= pointerInactive;
...
return dwFlags;
}
Pokud vyberete automaticky generování kódu zahrnout tento příznak Myši ukazatel oznámení při neaktivní na možnost Nastavení řízení stránky při vytváření ovládacího prvku s Průvodce ovládacího prvku MFC ActiveX.
Při IPointerInactive rozhraní povoleno Delegáti kontejneru WM_SETCURSOR a WM_MOUSEMOVE zpráv na ni.COleControlna provádění IPointerInactive po nastavení myši souřadnice vhodně odešle zprávy prostřednictvím mapy zpráva ovládacího prvku.Přidáním odpovídající položky do zprávy mapa dokáže zpracovat zprávy stejně jako běžná okna zprávy.Vaše obslužné rutiny pro tyto zprávy, vyhněte se použití m_hWnd členské proměnné (nebo jakékoli členské funkce, která jej používá) bez první kontroly, že jeho hodnota je NULL.
Můžete také neaktivní ovládací prvek jako cíl operace a přetažení OLE.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í.Chcete-li způsobit aktivace dochází během tažení přepsání COleControl::GetActivationPolicya vrátit se POINTERINACTIVE_ACTIVATEONDRAG příznak:
DWORD CMyAxOptCtrl::GetActivationPolicy()
{
return POINTERINACTIVE_ACTIVATEONDRAG;
}
Povolení IPointerInactive rozhraní obvykle znamená, že ovládací prvek schopný zpracovávat zprávy myši neustále.Získat toto chování v kontejneru, který nepodporuje IPointerInactive rozhraní, je nutné mít vždy aktivní, pokud je zobrazen ovládací prvek znamená ovládacího prvku by měla zahrnovat 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;