Кент Рейсдорф. BORLAND C++BUILDER. Раздел 4
Кент Рейсдорф. BORLAND C++BUILDER. Страница 422
Вы можете использовать в своих приложениях как PostMessageO, так и SendMessage(). Например, чтобы отправить себе сообщение, вы можете написать что-нибудь наподобие следующего:
PostMessage(Handle, WM_QUIT, 0, 0);
Первый параметр в PostMessageO и в SendMessageO — это дескриптор окна, которому вы хотите послать сообщение. В данном случае мы посылаем сообщение главной форме (предполагая, что эта строка содержится в ее исходном модуле).
В дополнение к функциям API Windows, VCL содержит метод с названием Perform(), который вы можете вызывать для посылки сообщений любому окну VCL. Perform() обходит систему передачи сообщений Windows и направляет сообщение непосредственно механизму обработки сообщений данного окна. Эквивалент предыдущей строки с использованием Perform() выглядит следующим образом:
Perform(WM_QUIT, 0, 0);
Чтобы посылать сообщения своему приложению и другим окнам внутри приложения, вы можете использовать любую из этих трех функций.
Мы уже обсуждали обработку событий в VCL, но краткий обзор не помешает. Когда определенный компонент получает сообщение Windows, он выясняет, существует ли обработчик для события, соответствующего этому сообщению. Если обработчик события существует, он вызывается. Если данному событию не был назначен обработчик, сообщение обрабатывается заданным по умолчанию способом. Вы можете обрабатывать любые сообщения, которые вам требуются, и игнорировать остальные.
То, что происходит в ваших обработчиках событий, зависит от ряда факторов: специфики обрабатываемого сообщения, действий вашей программы в ответ на сообщение, а также, изменяете ли вы входящее сообщение или только используете обработчик события для уведомления о том, что событие произошло. Когда вы полнее познакомитесь с программированием в Windows, вы увидите, что существуют буквально сотни вещей, которые можно сделать в ответ на событие.