Функция SendMessageCallback

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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz