Учись программированию на C++ Builder бесплатно!

Функция SendMessage посылает указанное в ней сообщение окну или множеству окон и не возвращается, пока это сообщение обрабатывается. Этим она отличается от функции PostMessage, которая возвращается сразу после передачи сообщения.

Объявление функции SendMessage:

Int SendMessage(HWnd hWnd, unsigned int Msg, WPARAM wParam, LPARAM lParam);

Параметр hWnd - дескриптор окна, которому передается сообщение. Если этот параметр равен HWND_BROADCAST, то сообщение передается всем окнам верхнего уровня в системе, включая недоступные и невидимые, кроме дочерних.

Параметр Msg определяет передаваемое сообщение. Параметры wParam и IParam могут содержать дополнительную информацию. Значение, возвращаемое функцией, зависит от вида сообщения.

Функции PostMessage объявлена следующим образом:

bool PostMessage(HWND hWnd, unsigned int Msg, WPARAM wParam, LPARAM IParam);

Эта функция похожа на SendMessage, но в отличие от нее она помещает сообщение в очередь и сразу возвращается. Таким образом, PostMessage не годится для передачи срочных сообщений, но зато она не блокирует вызвавшее приложение на время обработки сообщения приемником.

Параметры hWnd и Msg аналогичны для функции SendMessage. Если hWnd = NULL, то сообщение ставится в очередь сообщений (если она есть) текущего процесса.

Функция PostMessage возвращает ненулевое значение при успешном завершении и нуль в случае аварийного завершения. В этом случае причину ошибки можно установить вызовом функции GetLastError.

Имеется еще один метод, который может посылать сообщение непосредственно оконному компоненту.

Это метод Perform, объявление которого имеет вид:

Perform(unsigned int Msg, WPARAM wParam, LPARAM IParam);

Поиск по сайту