Сведения о статических элементах управления
Приложения часто используют статические элементы управления для метки других элементов управления или разделения группы элементов управления. Хотя статические элементы управления являются дочерними окнами, их нельзя выбрать. Таким образом, они не могут получать фокус клавиатуры и не могут иметь интерфейс клавиатуры. Статический элемент управления с стилем SS_NOTIFY получает входные данные мыши, уведомляя родительское окно, когда пользователь щелкает элемент управления или дважды щелкает элемент управления. Статические элементы управления относятся к классу СТАТИЧЕСКОГО окна.
Хотя статические элементы управления можно использовать в перекрывающихся, всплывающих и дочерних окнах, они предназначены для использования в диалоговых окнах, где система стандартизирует их поведение. Используя статические элементы управления вне диалоговых окон, разработчик повышает риск того, что приложение может вести себя в нестандартном режиме. Как правило, разработчик использует статические элементы управления в диалоговых окнах или использует стиль SS_OWNERDRAW для создания настраиваемых статических элементов управления.
В этом разделе рассматриваются следующие разделы.
- Статические типы элементов управления
- Обработка сообщений по умолчанию статического элемента управления
Статические типы элементов управления
Существует четыре типа статических элементов управления. Каждый тип имеет один или несколько статических стилей элементов управления.
- Простой статический элемент управления графики
- Текстовый статический элемент управления
- Статический элемент управления image
- Статический элемент управления, нарисованный владельцем
Простой статический элемент управления графики
Простой графический статический элемент управления отображает кадр или заполненный прямоугольник. Кадр можно нарисовать в нескольких стилях, включив черный, серый или белый. Кроме того, кадр может быть нарисован с черченным стилем, чтобы дать ему трехмерный вид. Стили кадров включают SS_BLACKFRAME, SS_GRAYFRAME, SS_WHITEFRAME, SS_ETCHEDHORZ, SS_ETCHEDVERT и SS_ETCHEDFRAME.
Прямоугольник может быть заполнен цветом в одном из трех стилей: черный, серый или белый. Эти стили определяются константами SS_BLACKRECT, SS_GRAYRECT и SS_WHITERECT.
Стили графики нельзя объединить.
Текстовый статический элемент управления
Текстовый статический элемент управления отображает текст в прямоугольнике в одном из пяти стилей:
- Выравнивание по левому краю без оболочки слов
- Выравнивание по левому краю с помощью оболочки слов
- выровнен по центру
- выровнен по правому краю
- простой
Эти стили определяются константами SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT и SS_SIMPLE соответственно. Система переупорядочения текста в этих элементах управления предопределенными способами, за исключением простого текста, который не переупорядочен.
Приложение может изменять текст в текстовом статическом элементе управления в любое время с помощью функции SetWindowText или сообщения WM_SETTEXT.
Система отображает столько текста, сколько он может в статическом элементе управления, и клипы независимо от того, что не подходит. Чтобы вычислить соответствующий размер элемента управления, получите метрики шрифта для текста. Дополнительные сведения о шрифтах и метрик шрифтов см. в разделе "Шрифты" и "Текст".
По умолчанию текст окна для статического элемента управления, как и для других элементов управления, может содержать амперсанд, который определяет следующий символ в качестве сочетания клавиш для элемента управления (или, в случае большинства статических элементов управления, для элемента управления, который является следующим элементом управления в порядке табуляции). Если вы хотите отобразить амперсанды в тексте, а не использовать их для определения сочетаний клавиш, включите стиль SS_NOPREFIX.
Статический элемент управления image
Статический элемент управления изображения может отображать растровые изображения, значки (включая анимированные значки) или расширенные метафайлы. Тип рисунка, отображаемого определенным статическим элементом управления, зависит от стиля элемента управления: SS_BITMAP, SS_ICON или SS_ENHMETAFILE. Приложение задает стиль при создании элемента управления, а также задает дескриптор растрового изображения, значка или метафайла для отображения элемента управления. После создания элемента управления приложение может связать другой графический элемент с элементом управления, отправив ему сообщение STM_SETIMAGE , указав дескриптор новому графическому объекту. Приложение может получить дескриптор графическому объекту, связанному с статическим элементом управления, отправив ему сообщение STM_GETIMAGE. Приложение отправляет сообщения в статический элемент управления с помощью функции SendDlgItemMessage.
Статический элемент управления, нарисованный владельцем
Используя стиль SS_OWNERDRAW, приложение может взять на себя ответственность за рисование статического элемента управления. Родительское окно нарисованного владельцем статического элемента управления (его владельца) получает сообщение WM_DRAWITEM всякий раз, когда статический элемент управления должен быть окрашен. Сообщение содержит указатель на структуру DRAWITEMSTRUCT , содержащую сведения о том, что окно владельца использует при рисовании элемента управления.
Обработка сообщений по умолчанию статического элемента управления
Процедура окна для предопределенного класса статического окна управления выполняет обработку по умолчанию для всех сообщений, которые не обрабатываются статическими процедурами управления. Когда статический элемент управления возвращает ЗНАЧЕНИЕ FALSE для любого сообщения, предопределенная процедура окна проверка сообщения и выполняет действие по умолчанию, описанное в следующей таблице. В таблице текстовый статический элемент управления — это статический элемент управления со стилем SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT или SS_SIMPLE.
Message | Действие по умолчанию |
---|---|
WM_CREATE | Загружает графический объект и размер окна в размер объекта для графических статических элементов управления. Не выполняет никаких действий для других статических элементов управления. |
WM_DESTROY | Освобождает и уничтожает любой графический объект для графических статических элементов управления. Не выполняет никаких действий для других статических элементов управления. |
WM_ENABLE | Переопределяет видимые статические элементы управления. |
WM_ERASEBKGND | Возвращает значение TRUE, указывающее, что элемент управления удаляет фон. |
WM_GETDLGCODE | Возвращает DLGC_STATIC. |
WM_GETFONT | Возвращает дескриптор шрифта для текстовых статических элементов управления. |
WM_GETTEXT | Возвращает количество скопированных символов. |
WM_GETTEXTLENGTH | Возвращает длину в символах текста для текстового статического элемента управления. |
WM_LBUTTONDBLCLK | Отправляет родительское окно код уведомления STN_DBLCLK , если стиль элемента управления SS_NOTIFY. |
WM_LBUTTONDOWN | Отправляет родительское окно код уведомления STN_CLICKED , если стиль элемента управления SS_NOTIFY. |
WM_NCLBUTTONDBLCLK | Отправляет родительское окно код уведомления STN_DBLCLK , если стиль элемента управления SS_NOTIFY. |
WM_NCLBUTTONDOWN | Отправляет родительское окно код уведомления STN_CLICKED , если стиль элемента управления SS_NOTIFY. |
WM_NCHITTEST | Возвращает HTCLIENT, если стиль элемента управления SS_NOTIFY; в противном случае возвращает HTTRANSPARENT. |
WM_PAINT | Переопределяет элемент управления. |
WM_SETFONT | Задает шрифт и повторы для текстовых статических элементов управления. |
WM_SETTEXT | Задает текст и повторы для текстовых статических элементов управления. |
Предопределенная процедура окна передает все остальные сообщения в DefWindowProc для обработки по умолчанию.