COleControl::GetActivationPolicy
IPointerInactive のインターフェイスをサポートするコントロールの既定のアクティブ化の動作は変更されます。
virtual DWORD GetActivationPolicy( );
戻り値
POINTERINACTIVE の列挙体のフラグの組み合わせ。有効なフラグは次のとおりです:
POINTERINACTIVE_ACTIVATEONENTRY
アクティブにするマウスがマウスの移動の操作中に、いつ入力またはオブジェクトは埋め込み必要があります。POINTERINACTIVE_DEACTIVATEONLEAVE
オブジェクトは、マウスがマウスの移動の操作中にオブジェクトを保持すると非アクティブ化されます。POINTERINACTIVE_ACTIVATEONDRAG
アクティブにするマウスをドラッグ アンド ドロップ操作中に、いつドラッグまたはオブジェクトは埋め込み必要があります。
解説
IPointerInactive のインターフェイスが有効になっている場合、コンテナーは、WM_SETCURSOR と WM_MOUSEMOVE のメッセージに委任します。COleControl の、このインターフェイスの実装は、コントロールのメッセージ マップを通じてマウスの座標を適切に調整すると、これらのメッセージをディスパッチします。
コンテナーは IPointerInactiveをサポートする非アクティブなオブジェクトの上にマウス ポインターを含む WM_SETCURSOR または WM_MOUSEMOVE のメッセージを受信されるたびにインターフェイスの GetActivationPolicy を呼び出し、POINTERINACTIVE の列挙体のフラグを返す必要があります。
メッセージ マップに対応するエントリを追加して通常のウィンドウのメッセージなどの、メッセージを処理できます。自分のハンドラーでは、値が非nullする、最初にチェック アウトせずに m_hWnd のメンバー変数 (またはメンバーを使用することによって機能します) 使用しないでください。
多くをするどのオブジェクトも、マウス カーソルが移動やマウス移動イベント (やなど) 対して特別な視覚的フィードバックを、POINTERINACTIVE_ACTIVATEONENTRY のフラグを返し、フィードバックを描画するときだけです。アクティブ発生させます。次に、オブジェクトがこのフラグを返す場合、コンテナーは転送、GetActivationPolicyに呼び出しをトリガーする埋め込み、同じメッセージをすばやくアクティブにする必要があります。
POINTERINACTIVE_ACTIVATEONENTRY と POINTERINACTIVE_DEACTIVATEONLEAVE のフラグを返した場合、オブジェクトはマウスがオブジェクトにある場合にのみアクティブになります。POINTERINACTIVE_ACTIVATEONENTRY のフラグだけを返した場合、オブジェクトはマウスが最初にオブジェクトの入ったときにアクティブになります。
非アクティブなコントロールに OLE ドラッグ アンド ドロップ操作のターゲットにすることができます。これは、コントロールのウィンドウがドロップ ターゲットとして登録するために、ユーザーがその上にオブジェクトをドラッグし、コントロールをアクティブにすることが必要です。アクティブ化をドラッグ中に発生させるには、POINTERINACTIVE_ACTIVATEONDRAG のフラグを返します。:
DWORD CMyAxCtrl::GetActivationPolicy()
{
return POINTERINACTIVE_ACTIVATEONDRAG;
}
GetActivationPolicy でやり取りされる情報は、コンテナーによってキャッシュしないでください。代わりに、このメソッドは、マウスが非アクティブなオブジェクトに入るたびに呼び出されます。
マウスがボタンの上に入力するか非アクティブになるアクティブなオブジェクトが埋め込み先である必要がない場合、コンテナーはこのオブジェクトに OnInactiveSetCursor を呼び出して、マウス ポインターがオブジェクトに続ける限り WM_SETCURSOR の後続のメッセージをディスパッチする必要があります。
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;
必要条件
ヘッダー : afxctl.h