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


Метод IOleInPlaceSiteWindowless::SetCapture (ocidl.h)

Разрешить встроенному активному безоконному объекту перехватывать все сообщения мыши.

Синтаксис

HRESULT SetCapture(
  [in] BOOL fCapture
);

Параметры

[in] fCapture

Если задано значение TRUE, контейнер должен захватывать мышь для объекта . Если значение РАВНО FALSE, контейнер должен освободить запись мыши для объекта .

Возвращаемое значение

Этот метод возвращает S_OK, если запись мыши была успешно предоставлена объекту . При вызове для освобождения захвата мыши этот метод не должен возвращать ошибку. Другие возможные возвращаемые значения включают следующее.

Код возврата Описание
S_FALSE
Объекту отказано в фиксации мыши.

Комментарии

Объект без окна захватывает входные данные с помощью мыши, вызывая IOleInPlaceSiteWindowless::SetCapture с true в объекте сайта. Контейнер может запретить захват с помощью мыши. В этом случае этот метод возвращает S_FALSE. Если запись предоставлена, контейнер должен задать для захвата мыши Windows собственное окно и отправить любое последующее сообщение мыши объекту независимо от того, находится ли курсор мыши над этим объектом или нет.

Позже объект может освободить захват мыши, вызвав IOleInPlaceSiteWindowless::SetCapture с false в своем объекте сайта. Запись также может быть освобождена из-за внешнего события, например нажатия клавиши ESC. В этом случае объект уведомляется WM_CANCELMODE сообщением, которое отправляет контейнер вместе с фокусом клавиатуры.

Контейнеры должны отправлять все сообщения мыши, включая WM_SETCURSOR, в объект OLE без окон, который захватил мышь. Если ни объект не захватил мышь, контейнер должен отправить сообщение мыши объекту под курсором мыши.

Контейнер отправляет эти сообщения окна, вызывая IOleInPlaceObjectWindowless::OnWindowMessage для объекта без окна. Объект без окна может возвращать S_FALSE этому методу, чтобы указать, что сообщение мыши не было обработано. Затем контейнер должен выполнить поведение по умолчанию для сообщения, вызвав функцию DefWindowProc . Для WM_SETCURSOR контейнер может либо задать сам курсор, либо ничего не делать.

Объекты также могут использовать IOleInPlaceSiteWindowless::OnDefWindowMessage для вызова обработки сообщений по умолчанию из контейнера. В случае сообщения WM_SETCURSOR это позволяет объекту выполнять действия, если контейнер не устанавливает курсор.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ocidl.h

См. также раздел

IOleInPlaceSiteWindowless

IOleInPlaceSiteWindowless::OnDefWindowMessage