Поделиться через


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.

Можно обрабатывать эти сообщения как и обычные сообщения окна, добавив соответствующие записи для сопоставления сообщений. В обработчиках избегайте использования переменной члена m_hWnd (или некие функций-членов, который использует seh), без проверки, его значение подписчиков, отличных от 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

См. также

Ссылки

Класс COleControl

Диаграмма иерархии

COleControl::OnInactiveSetCursor

COleControl::OnInactiveMouseMove