Программирование для IBM OS2


2.3. Передача сообщений функции окна - часть 2


При этом она возвращает то значение, которое было передано через оператор return обработчиком сообщения при возврате управления из функции окна.

Ниже мы привели фрагмент исходного текста приложения, в котором окну hWndChildFrame передается сообщение WM_SETICON :

WinSendMsg (hWndChildFrame, WM_SETICON , (MPARAM)WinQuerySysPointer (HWND_DESKTOP, SPTR_APPICON, FALSE), NULL);

Первый параметр этого сообщения равен значению, полученному от функции WinQuerySysPointer (подробнее эту функцию мы рассмотрим позже), второй равен NULL.

Функция WinBroadcastMsg позволяет передавать сообщения одним из двух описанных выше методов одновременно всем дочерним окнам любого родительского окна:

BOOL WinBroadcastMsg ( HWND hwnd, // идентификатор родительского окна ULONG ulMsgid, // код сообщения MPARAM mpParam1, // первый параметр MPARAM mpParam2, // второй параметр ULONG flCmd); // команда

В зависимости от значения параметра flCmd функция WinBroadcastMsg использует различный способ передачи сообщения дочерним окнам. Ниже мы привели список возможных значений для этого параметра.

Значение Описание
BMSG_POST Передача сообщения через очередь сообщения. Этот параметр несовместим с параметрами BMSG_SEND и BMSG_POSTQUEUE
BMSG_SEND Непосредственная передача сообщения. Этот параметр несовместим с параметрами BMSG_POST и BMSG_POSTQUEUE
BMSG_POSTQUEUE Передача сообщения всем задачам процесса, имеющим очередь сообщений. Этот параметр несовместим с параметрами BMSG_POST и BMSG_SEND
BMSG_DESCENDANTS Сообщение передается всем дочерним окнам родительского окна hwnd
BMSG_FRAMEONLY Сообщение передается только окнам, имеющим стиль CS_FRAME (только окнам Frame Window )

В случае успешного завершения функция WinBroadcastMsg возвращает значение TRUE, при ошибке - FALSE.

Еще одна функция, которую мы рассмотрим в этом разделе, называется WinPostQueueMsg . Она позволяет записывать сообщение в заданную очередь сообщений:

BOOL WinPostQueueMsg ( HMQ hmq, // идентификатор очереди сообщений ULONG ulMsgid, // код сообщения MPARAM mpParam1, // первый параметр MPARAM mpParam2); // второй параметр

Обратите внимание, что этой функции не передается идентификатор окна.




Начало  Назад  Вперед



Книжный магазин