Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Регистрирует или отменяет регистрацию диспетчера сообщений для каждого потока, вызываемого при наличии сообщений окна, доступных для отправки в API ожидания COM в потоке ASTA. Эта функция обычно вызывается CoreWindow, но в некоторых случаях другие компоненты, которые должны специализируться на том, как сообщения отправляются в потоке ASTA, также могут вызывать эту функцию.
Синтаксис
void CoSetMessageDispatcher(
[in, optional] PMessageDispatcher pMessageDispatcher
);
Параметры
[in, optional] pMessageDispatcher
Если значение не равно null, объект диспетчера сообщений для регистрации. Этот объект также должен реализовать IWeakReferenceSource. Если значение NULL, отменяет регистрацию текущего диспетчера сообщений.
Возвращаемое значение
Если эта функция выполнена успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Замечания
Эта функция поддерживается только в потоках ASTA. Попытка настроить диспетчер сообщений в потоке, отличном от ASTA, автоматически завершается сбоем без побочных эффектов.
Попытка задать объект, который не реализует IWeakReferenceSource без побочных эффектов.
Вызов этой функции с допустимым и ненулевым параметром pMessageDispatcher регистрирует этот объект для получения обратного вызова PumpMessages, когда есть сообщения окна, доступные для отправки с помощью API ожидания COM в этом потоке ASTA. Слабая ссылка среды выполнения Windows на этот объект, и объект получает обратные вызовы, пока регистрация не будет заменена или неинициализирована ASTA. Каждый вызов этой функции заменяет ранее зарегистрированный диспетчер сообщений, если таковой имеется.
Невозможно проверить, зарегистрирован ли диспетчер сообщений в потоке ASTA или получить ранее зарегистрированный диспетчер сообщений. Эта функция должна вызываться только в тех случаях, когда известно, что это не будет сталкиваться с другой регистрацией, в частности:
- В потоках пользовательского интерфейса приложения Магазина Windows эта функция вызывается CoreWindow для регистрации диспетчера. Другие компоненты не должны вызывать эту функцию в этих потоках.
- Платформы пользовательского интерфейса могут поддерживать режим разработки, в котором приложения выполняются в классической среде и поэтому не имеют CoreWindow в своих потоках пользовательского интерфейса. Вместо поддержки CoreWindow эти платформы пользовательского интерфейса могут регистрировать диспетчер сообщений в потоках пользовательского интерфейса для обработки специальных сообщений окна, обычно обрабатываемых CoreWindow (например, акселераторами). Не обязательно вызывать эту функцию, если платформа пользовательского интерфейса не нуждается в этой функции.
- Браузеры IAppVisibility не ограничены API приложений Магазина Windows и поэтому могут иметь собственную обработку сообщений окна с помощью API-интерфейсов user32. Однако эти приложения по-прежнему имеют потоки пользовательского интерфейса ASTA, предоставляемые объектом приложения, и могут зарегистрировать диспетчер сообщений для обработки этой специальной обработки. Не обязательно вызывать эту функцию, если браузер не нуждается в этой функции.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Виндоус |
| Header | messagedispatcherapi.h |
| Library | Ole32.Lib |