Функция SendMessageCallbackA (winuser.h)
Отправляет указанное сообщение в окно или окна. Он вызывает процедуру окна для указанного окна и возвращает немедленно, если окно принадлежит другому потоку. После обработки сообщения оконной процедурой система вызывает указанную функцию обратного вызова, передав результат обработки сообщения и значение, определенное приложением, в функцию обратного вызова.
Синтаксис
BOOL SendMessageCallbackA(
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam,
[in] SENDASYNCPROC lpResultCallBack,
[in] ULONG_PTR dwData
);
Параметры
[in] hWnd
Тип: HWND
Дескриптор для окна, оконная процедура которого получит сообщение. Если этот параметр имеет значение HWND_BROADCAST ((HWND)0xffff), сообщение отправляется во все окна верхнего уровня в системе, включая отключенные или невидимые окна без владельца, перекрывающиеся окна и всплывающие окна; но сообщение не отправляется в дочерние окна.
[in] Msg
Тип: UINT
Отправляемое сообщение.
Списки системных сообщений см. в разделе Системные сообщения.
[in] wParam
Тип: WPARAM
Дополнительные сведения, относящиеся к сообщению.
[in] lParam
Тип: LPARAM
Дополнительные сведения, относящиеся к сообщению.
[in] lpResultCallBack
Тип: SENDASYNCPROC
Указатель на функцию обратного вызова, которую система вызывает после обработки сообщения процедурой окна. Дополнительные сведения см. в разделе SendAsyncProc.
Если hWndHWND_BROADCAST ( (HWND)0xffff), система вызывает функцию обратного вызова SendAsyncProc один раз для каждого окна верхнего уровня.
[in] dwData
Тип: ULONG_PTR
Определяемое приложением значение, отправляемое в функцию обратного вызова, на которую указывает параметр lpCallBack .
Возвращаемое значение
Тип: BOOL
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Если целевое окно принадлежит тому же потоку, что и вызывающий объект, процедура окна вызывается синхронно, а функция обратного вызова вызывается сразу после возврата процедуры окна. Если целевое окно принадлежит потоку, отличному от вызывающего объекта, функция обратного вызова вызывается только в том случае, если поток, который вызвал SendMessageCallback , также вызывает GetMessage, PeekMessage или WaitMessage.
Если вы отправляете сообщение в диапазоне ниже WM_USER в асинхронные функции сообщений (PostMessage, SendNotifyMessage и SendMessageCallback), его параметры сообщения не могут включать указатели. В противном случае операция завершится ошибкой. Функции будут возвращены до того, как принимающий поток сможет обработать сообщение, и отправитель освободит память до его использования.
Приложения, которые должны обмениваться данными с помощью HWND_BROADCAST , должны использовать функцию RegisterWindowMessage , чтобы получить уникальное сообщение для взаимодействия между приложениями.
Система выполняет маршалинг только для системных сообщений (в диапазоне от 0 до (WM_USER–1)). Чтобы отправить другие сообщения (т. е>. WM_USER) в другой процесс, необходимо выполнить настраиваемое маршалирование.
Примечание
Заголовок winuser.h определяет SendMessageCallback в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
Набор API | ext-ms-win-ntuser-message-l1-1-0 (появилось в Windows 8) |
См. также раздел
Основные понятия
Справочные материалы