Сообщения пользовательских органов управления


Поскольку органы управления - это окна, приложение может управлять ими при помощи использования функций управления окнами, такими как функции ShowWindow и EnableWindow. Если класс окна органа управления поддерживает управляющие сообщения (control messages), то приложение может также управлять органом управления этого класса при помощи использования функции SendMessage, чтобы отправлять эти сообщения органу управления. Назначение и функция каждого управляющего сообщения являются специфическими для класса окна и определяются процедурой окна органа управления. Родительское окно или другие окна отправляют управляющие сообщения, чтобы предписать органу управления выполнить указанные задачи. Процедура окна обрабатывает эти сообщения и выполняет затребованное действие.

Сообщения органа управления могут быть предопределенными или определяемыми программой. Система имеет несколько предопределенных сообщений, таких как WM_GETTEXT и WM_GETDLGCODE, которые она отправляет органам управления. Эти сообщения обычно соответствуют функциям управления окнами, которые выполняют действия в окнах. Вообще, процедура окна для определяемого программой органа управления должна обработать любое предопределенное сообщение органа управления из нижеследующей таблицы, если сообщение оказывает влияние на операцию органа управления.

Сообщение Рекомендации
WM_GETDLGCODE Обрабатывать, если орган управления использует клавиши ENTER, ESC, TAB или клавиши курсора. Функция IsDialogMessage отправляет это сообщение органам управления в диалоговом окне, чтобы определить, обрабатывать ли  клавиши или передать их обработку органу управления.
WM_GETFONT Обрабатывать, если сообщение WM_SETFONT также обрабатывается.
WM_GETTEXT Обрабатывать, если текст органа управления не тот же самый как в заголовке, определенном функцией CreateWindowEx.
WM_GETTEXTLENGTH Обрабатывать, если текст органа управления не тот же самый как в заголовке, определенном функцией CreateWindowEx.
WM_KILLFOCUS Обрабатывать, если орган управления показывает на экране каретку, прямоугольник фокуса или другой элемент, который указывает, что он имеет фокус ввода.
WM_SETFOCUS Обрабатывать, если орган управления показывает на экране каретку, прямоугольник фокуса или другой элемент, который указывает, что он имеет фокус ввода.
WM_SETTEXT Обрабатывать, если текст органа управления не тот же самый как  в заголовке, определенном функцией CreateWindowEx.
WM_SETFONT Обрабатывать, если орган управления показывает на экране текст. Система отправляет это сообщение, создавая диалоговое окно, которое имеет стиль DS_SETFONT.

Определяемые программой сообщения специфические для данного органа управления и должны явно отправляться  органу управления при помощи использования функции SendMessage или SendDlgItemMessage. Числовое значение для каждого сообщения должно быть уникальным и не должно находиться в противоречии со значениями других сообщений окна. Чтобы гарантировать то, что определяемые программой значения сообщения не находятся в противоречии, приложение должно создать каждое значение, добавляя уникальное число к значению WM_USER.

 

Назад в оглавление
На главную страницу

Hosted by uCoz