Поделиться через


Сведения о статических элементах управления

Приложения часто используют статические элементы управления для метки других элементов управления или разделения группы элементов управления. Хотя статические элементы управления являются дочерними окнами, их нельзя выбрать. Таким образом, они не могут получать фокус клавиатуры и не могут иметь интерфейс клавиатуры. Статический элемент управления с стилем SS_NOTIFY получает входные данные мыши, уведомляя родительское окно, когда пользователь щелкает элемент управления или дважды щелкает элемент управления. Статические элементы управления относятся к классу СТАТИЧЕСКОГО окна.

Хотя статические элементы управления можно использовать в перекрывающихся, всплывающих и дочерних окнах, они предназначены для использования в диалоговых окнах, где система стандартизирует их поведение. Используя статические элементы управления вне диалоговых окон, разработчик повышает риск того, что приложение может вести себя в нестандартном режиме. Как правило, разработчик использует статические элементы управления в диалоговых окнах или использует стиль SS_OWNERDRAW для создания настраиваемых статических элементов управления.

В этом разделе рассматриваются следующие разделы.

Статические типы элементов управления

Существует четыре типа статических элементов управления. Каждый тип имеет один или несколько статических стилей элементов управления.

Простой статический элемент управления графики

Простой графический статический элемент управления отображает кадр или заполненный прямоугольник. Кадр можно нарисовать в нескольких стилях, включив черный, серый или белый. Кроме того, кадр может быть нарисован с черченным стилем, чтобы дать ему трехмерный вид. Стили кадров включают 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 для обработки по умолчанию.