共用方式為


COleControl::GetActivationPolicy

變更 IPointerInactive 支援介面的控制項預設的啟動行為。

virtual DWORD GetActivationPolicy( );

傳回值

旗標的組合 POINTERINACTIVE 列舉的。可能的旗標為:

  • POINTERINACTIVE_ACTIVATEONENTRY
    物件應該就地啟動滑鼠何時在滑鼠移動作業時存取它。

  • POINTERINACTIVE_DEACTIVATEONLEAVE
    物件,表示當滑鼠在滑鼠移動作業期間,讓物件應該停用。

  • POINTERINACTIVE_ACTIVATEONDRAG
    物件應該就地啟動滑鼠何時拖曳到它在拖放作業時。

備註

IPointerInactive 介面以啟用,容器會委派 WM_SETCURSORWM_MOUSEMOVE 訊息給它。這個介面的 COleControl 的實作會將您的控制項的訊息對應會分派這些訊息,然後適當調整滑鼠座標之後。

當容器接收與滑鼠指標的 WM_SETCURSORWM_MOUSEMOVE 訊息在支援 IPointerInactive的非現用的物件,則應該呼叫介面中的 GetActivationPolicy 和傳回 POINTERINACTIVE 列舉型別的旗標。

您可以將對應的項目處理這些訊息像一般的 Windows 訊息,加入訊息對應。在您的處理常式,請避免使用 m_hWnd 成員變數 (或所有成員函式來使用它),而不需先檢查其值不是NULL

所有物件適合不僅設定滑鼠游標和 (或) 引發的滑鼠移動事件,如顯示特殊視覺化回應,則應該傳回 POINTERINACTIVE_ACTIVATEONENTRY 旗標和繪製回應,只有在作用中。如果物件傳回這個旗標,容器應該立即傳回並加以啟動就地轉送會觸發這個呼叫 GetActivationPolicy相同的訊息。

如果 POINTERINACTIVE_ACTIVATEONENTRYPOINTERINACTIVE_DEACTIVATEONLEAVE 旗標時傳回,則物件只會啟動,當滑鼠指標在物件。如果只 POINTERINACTIVE_ACTIVATEONENTRY 旗標時傳回,則物件一次只能啟動,當滑鼠首次存取物件。

您也可以在非現用控制項是 OLE 拖放作業的目標。這需要啟動控制項時,在使用者拖曳其物件時,控制項視窗,因此可以登錄為置放目標。在拖曳期間,若要讓啟動時,會傳回 POINTERINACTIVE_ACTIVATEONDRAG 旗標:

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

不應由容器快取 GetActivationPolicy 傳達的資訊。相反地,這個方法,在滑鼠進入非作用中物件時,應呼叫。

如果非作用中物件不需要就地啟動滑鼠何時進入該模式,其容器應該發送後續 WM_SETCURSOR 訊息加入至這個物件是藉由呼叫 OnInactiveSetCursor ,只要將滑鼠指標暫停在物件。

啟用 IPointerInactive 介面通常表示您要讓控制項能夠隨時處理滑鼠訊息。若要取得不支援 IPointerInactive 介面之容器的行為,您必須具有已啟動,則可見,這表示您的控制項應該在其其他旗標中的 OLEMISC_ACTIVATEWHENVISIBLE 旗標。不過,防止這個旗標會在支援 IPointerInactive容器的效果,您也可以指定 OLEMISC_IGNOREACTIVATEWHENVISIBLE 旗標:

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

需求

Header: afxctl.h

請參閱

參考

COleControl 類別

階層架構圖

COleControl::OnInactiveSetCursor

COleControl::OnInactiveMouseMove