Кент Рейсдорф. 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, вы увидите, что существуют буквально сотни вещей, которые можно сделать в ответ на событие.

Web-дизайн (с) 2010 All rights reserved