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


Функция 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)

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

Основные понятия

Сообщения и очереди сообщений

PostMessage

Справочные материалы

RegisterWindowMessage

SendAsyncProc

SendMessageCallback

SendNotifyMessage