COleControl::GetActivationPolicy
變更 IPointerInactive 支援介面的控制項預設的啟動行為。
virtual DWORD GetActivationPolicy( );
傳回值
旗標的組合 POINTERINACTIVE 列舉的。可能的旗標為:
POINTERINACTIVE_ACTIVATEONENTRY
物件應該就地啟動滑鼠何時在滑鼠移動作業時存取它。POINTERINACTIVE_DEACTIVATEONLEAVE
物件,表示當滑鼠在滑鼠移動作業期間,讓物件應該停用。POINTERINACTIVE_ACTIVATEONDRAG
物件應該就地啟動滑鼠何時拖曳到它在拖放作業時。
備註
當 IPointerInactive 介面以啟用,容器會委派 WM_SETCURSOR 和 WM_MOUSEMOVE 訊息給它。這個介面的 COleControl 的實作會將您的控制項的訊息對應會分派這些訊息,然後適當調整滑鼠座標之後。
當容器接收與滑鼠指標的 WM_SETCURSOR 或 WM_MOUSEMOVE 訊息在支援 IPointerInactive的非現用的物件,則應該呼叫介面中的 GetActivationPolicy 和傳回 POINTERINACTIVE 列舉型別的旗標。
您可以將對應的項目處理這些訊息像一般的 Windows 訊息,加入訊息對應。在您的處理常式,請避免使用 m_hWnd 成員變數 (或所有成員函式來使用它),而不需先檢查其值不是NULL。
所有物件適合不僅設定滑鼠游標和 (或) 引發的滑鼠移動事件,如顯示特殊視覺化回應,則應該傳回 POINTERINACTIVE_ACTIVATEONENTRY 旗標和繪製回應,只有在作用中。如果物件傳回這個旗標,容器應該立即傳回並加以啟動就地轉送會觸發這個呼叫 GetActivationPolicy相同的訊息。
如果 POINTERINACTIVE_ACTIVATEONENTRY 和 POINTERINACTIVE_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