Прикладная программа обычно отправляет сообщение, чтобы уведомить оконную процедуру о немедленном исполнении задачи. Функция SendMessage отправляет сообщение оконной процедуре, соответствующей данному окну. Функция ждет до тех пор, пока оконная процедура не завершит его обработку, а затем возвращает результат обработки сообщения. Родительские и дочерние окна часто связываются, при помощи отправки сообщений друг другу. Например, родительское окно, которое имеет поле редактирования как и его дочернее окно, может поместить текст органа управления, отправляя ему сообщение. Орган управления может уведомить родительское окно о изменении текста, которое выполнено пользователем, отправив сообщения обратно родителю.
Функция SendMessageCallback также отправляет сообщение оконной процедуре, соответствующей данному окну. Однако, эта функция значение возвращает немедленно. После того, как оконная процедура обработает сообщение, система вызывает заданную функцию повторного вызова. Для получения дополнительной информации о функции повторного вызова, см. функцию SendAsyncProc.
Время от времени, у вас может возникать потребность отправить сообщение всем окнам верхнего уровня в системе. Например, если прикладная программа изменяет системное время, она должна уведомить о изменении все окна верхнего уровня, путем отправки сообщения WM_TIMECHANGE. Приложение может отправить сообщение всем окнам верхнего уровня путем вызова функции SendMessage, а в параметре hwnd определить флажок HWND_TOPMOST. Вы можете также транслировать сообщение всем прикладным программам путем вызова функция BroadcastSystemMessage, а в параметре lpdwRecipients определить флажок BSM_APPLICATIONS.
Используя функцию InSendMessage или InSendMessageEx, оконная процедура может выяснить, обрабатывается ли это сообщение, отправленное другим потоком. Эта возможность приносит пользу тогда, когда обработка сообщения зависит от происхождения сообщения.