Функция SendMessageCallback отправляет заданное сообщение окну или окнам. Функция вызывает оконную процедуру для заданного окна и немедленно возвращает значение. После того, как оконная процедура обработает сообщение, система вызывает заданную функцию повторного вызова, переправляя результат обработки сообщения и определяемого программой значения функции повторного вызова.
Синтаксис
BOOL SendMessageCallback( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, SENDASYNCPROC lpCallBack, ULONG_PTR dwData ); |
Параметры
hWnd
[in] Дескриптор окна, оконная процедура которого примет сообщение. Если этот параметр - HWND_BROADCAST, сообщение отправляется всем окнам верхнего уровня в системе, включая заблокированные или невидимые, не имеющие владельца окна, перекрывающие и выскакивающие окна; но сообщение не отправляется дочерним окнам.
Msg
[in] Определяет сообщение, которое будет отправлено.
wParam
[in] Устанавливает дополнительную конкретизирующую сообщение информацию.lParam
[in] Устанавливает дополнительную конкретизирующую сообщение информацию.lpCallBack
[in] Указатель на функцию повторного вызова, которую вызывает система после обработки сообщения оконной процедурой. Информацию о соответствующих функциях повторного вызова см. в статье SendAsyncProc.Если параметр hWnd - HWND_BROADCAST, система вызывает функцию повторного вызова SendAsyncProc по разу для каждого окна верхнего уровня.
dwData
[in] Определяет установленное программой значение, которое будет отправлено функции повторного вызова, указанной параметром lpfnResultCallBack.Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - не нуль.
Если функция не выполняет задачу, величина возвращаемого значения нулевая. Чтобы получить дополнительные данные об ошибке, вызовите функцию GetLastError.
Замечания
Если Вы отправляете сообщение в диапазоне значений ниже WM_USER функциям асинхронных сообщений (PostMessage, SendNotifyMessage и SendMessageCallback), то параметры этого сообщения не могут включать в себя указатели. Иначе операция завершиться ошибкой. Функции возвратят значения прежде, чем принимающий поток получит шанс обработать сообщение, а отправитель освободит память прежде, чем она будет использована.
Прикладные программы, которым необходимо общаться друг с другом при помощи HWND_BROADCAST, должны использовать функцию RegisterWindowMessage, чтобы получить уникальное сообщение для связи между приложениями.
Система совершает сортировку только системных сообщений (которые в диапазоне от 0 до WM_USER). Чтобы отправлять другие сообщения (которые значением выше WM_USER) другому процессу, Вы должны сделать специальную сортировку (маршалинг).
Функция повторного вызова вызывается только тогда, когда поток, который обратился к функции SendMessageCallback также вызывает функцию GetMessage, PeekMessage или WaitMessage.
Windows 95/98/Me: SendMessageCallbackW поддерживается подпрограммой Microsoft Layer for Unicode (MSLU). Чтобы использовать подпрограмму, Вы должны добавить некоторые файлы к вашему приложению, как это определено в Microsoft Layer for Unicode для систем Windows 95/98/Me.
Смотри также
Обзор Сообщения и очереди сообщений, PostMessage, RegisterWindowMessage, SendAsyncProc, SendNotifyMessage
Размещение и совместимость SendMessageCallback |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |