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


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

Отправленное сообщение.

Списки системных сообщений см. в System-Defined сообщениях.

[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 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка 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