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


TN031. Панели элементов управления

Примечание

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

Эта заметка описываются классы в панели элементов управления MFC. общий CControlBar, CStatusBar, CToolBar, CDialogBar и CDockBar.

CControlBar

ControlBarCWnd- производный класс, который:

  • Выравнивает по сверху или снизу фреймового окна.

  • Может содержать дочерние элементы, или элементы управления HWND, (например, CDialogBar) или не элементы HWND зависимости (например, CToolBar, CStatusBar).

Панели элементов управления поддерживают дополнительные стили:

  • закрепление CBRS_TOP (по умолчанию) панель элементов управления в верхней части окна.

  • закрепление CBRS_BOTTOM панель элементов управления вниз.

  • CBRS_NOALIGN не перемещает панель элементов управления, когда родительский изменения.

Классы, производные от CControlBar приведены более интересные реализации:

  • строка состояния CStatusBar a, элементы области строки состояния, содержащая текст.

  • панель инструментов CToolBar a, элементы кнопки растрового изображения выравниванные в строке.

  • фрейм CDialogBar a — на панель инструментов, содержащую стандартные элементы управления windows (созданные из ресурса шаблона диалогового окна).

  • CDockBar — Обобщило закрепление область для других объектов, производных CControlBar. Специальные функции-члены и переменных, доступных в этом классе, скорее всего, изменения в будущих выпусках.

Все объекты и окна панели элементов управления будут дочерними окнами определенного родительского фреймового окна. Они обычно добавляются как того фрейма в клиентской области (например, клиент MDI или представления). Идентификатор дочернего окна панели элементов управления важно. Структура по умолчанию панели элементов управления работает только для панелей элементов управления с идентификаторы в диапазоне от AFX_IDW_CONTROLBAR_FIRST до AFX_IDW_CONTROLBAR_LAST. Обратите внимание, что даже если диапазон идентификаторов панели элементов управления 256, первым 32 этих идентификаторов панели элементов управления особенно, поскольку они не поддерживаются архитектурой предварительного просмотра.

Класс CControlBar предоставляет стандартную реализацию.

  • Выравнивание панель элементов управления в верхней, нижней части или какой-либо части кадра.

  • Выделить массивы элемента управления.

  • Для реализации производных классов.

Объекты панели элементов управления C++ обычно внедряются в качестве члены производного класса CFrameWnd и будут очищены, если будут уничтожены родительские HWND и объект. Если необходимо выбрать объект панели элементов управления в куче, можно просто задать элементу m_bAutoDestruct в TRUE, чтобы открыть панель элементов управления «delete this», если HWND будет уничтожается.

Примечание

При создании собственного CControlBar- производный класс, а не с помощью одного из производных классов MFC, например CStatusBar, CToolBar или CDialogBar, необходимо разместить элемент данных m_dwStyle.Это можно сделать при переопределении Создать:

// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create( CWnd* pParentWnd, DWORD dwStyle, UINT nID )
{
   m_dwStyle = dwStyle;

   .
   .
   .
}

Алгоритм макета панели элементов управления

Алгоритм макета панели элементов управления очень прост. Фреймовое окно отправляет сообщение WM_SIZEPARENT ко всем дочерним элементам в диапазоне панели элементов управления. Вместе с этим сообщением, передается указатель на прямоугольника клиента родительского элемента. Это сообщение отправляется к дочерним элементам в соответствии с z-порядком. Дочерние элементы панели элементов управления используют эти сведения для размещения и уменьшить размер клиентской области родительского элемента. Конечный прямоугольник, полученный для обычного клиентской области (меньше панелей элементов управления) используется для размещения главного клиентского окна (обычно клиента, представление или разделитель MDI).

В разделе CWnd::RepositionBars и CFrameWnd::RecalcLayout более подробные сведения.

Сообщения Windows MFC закрытой, включая WM_SIZEPARENT, приводятся в разделе Техническое примечание 24.

CStatusBar

Строка состояния панель элементов управления, строка содержит областей текстового вывода. 2 Существует два способа использования областей текстового вывода:

  • Как линия сообщения

    например, стандартная линия сообщения справки меню). Обычно это параллельный доступ к 0, индексированного

  • Как индикаторы состояния

    (например, индикаторы, НАКОНЕЧНИКА NUM и SCRL). Обычно это параллельный доступ к идентификатором строки или команды

Шрифт для строки состояния точек Sans Serif 10 MS (продиктованный как разработки приложения интерфейса Windows или совпадением модулей сопоставления шрифта, лучшим шрифта 10 швейцарцев точки пропорционального). В некоторых версиях Windows (например, японский выпуск, выбранные шрифты другие.

Цвета, используемые в строке состояния также согласуются с рекомендациями руководства по разработке приложения интерфейса Windows. Эти цвета не следует задаватьы и изменяются динамически в ответ на настройки пользователя на панели управления.

Элемент

Значение ЦВЕТ Windows

RGB по умолчанию

Фон строки состояния

COLOR_BTNFACE

RGB (192, 192, 192)

Текст строки состояния

COLOR_BTNTEXT

RGB (000, 000, 000)

Верхний/левые края строки состояния

COLOR_BTNHIGHLIGHT

RGB (255, 255, 255)

Программа-робот строки состояния и правого края

COLOR_BTNSHADOW

RGB (128, 128, 128)

Поддержка CCmdUI для CStatusBar

Способ индикаторы обычно обновляется через механизм ON_UPDATE_COMMAND_UI. В строке состояния простоя, вызывает обработчик ON_UPDATE_COMMAND_UI с Идентификатором строки области индикатора.

Обработчик ON_UPDATE_COMMAND_UI может вызвать:

  • Включить: Включение или отключение область. Отключенная область выглядит выполняется точно так же, как и включенной область, но текст невидимый (т е отключить индикатор текста).

  • SetText: Изменение текста. Будьте внимательны при использовании этого, поскольку область автоматически изменить нельзя.

См. в описании класса CStatusBar справочника по библиотеке классов подробные сведения о API создания и настройки CStatusBar. Настройка большинства строк состояния должна быть создана до строка состояния исходного сделана видимой.

Строка состояния поддерживает только одну область stretchy, обычно первую область. Размер этой области действительно минимальный размер. Если строка состояния больше минимального размера всех областей, любая дополнительная ширина будет передан stretchy области. Приложение по умолчанию со строкой состояния, выровненные по правому краю индикаторы для НАКОНЕЧНИКА NUM и SCRL, поскольку первая область stretchy.

CToolBar

Панель инструментов панели элементов управления со строкой кнопок растрового изображения, которые могут включать разделители. 2 Кнопок стиля поддерживаются: кнопки и кнопки флажка. Функция группы радио можно построить с кнопками и ON_UPDATE_COMMAND_UI флажка.

Все кнопки растрового изображения в панели инструментов берутся из одного растрового изображения. Это растровое изображение должно содержать один изображение или глиф для каждой кнопки. Обычно порядок изображений/глифов в растровом изображении тот же порядок, в котором они будут отображаются на экране. (Это можно изменить с помощью API настройки).

Каждая кнопка должна быть одинаковым размером. По умолчанию являются пиксели 24x22. Каждое изображение/глиф должны быть одинаковым размером и должны быть параллельно в различных форматах. Изображение по умолчанию и размер глифа пиксели 16x15. Поэтому для кнопок панели инструментов с 10 (с использованием обычные размеры) необходимо растровое изображение, 160 пикселей в ширину и 15 пикселей высокие.

Каждая кнопка имеет один и только один изображение/глиф. Различные состояния и стиль кнопки (например, pressed, вверх, вниз, запрещено, запрещено вниз, непредвиденный) алгоритмически создаются из этих одного образа или глифов. Любое растровое изображение или DIB цвета можно использовать теоретически. Алгоритм создания различные состояния кнопки лучше всего подходит исходный образ затенения серого цвета. Просмотрите стандартные кнопки панели инструментов и clipart кнопки панели инструментов, приведенных в примере MFC CLIPART общие примеры.

Цвета, используемые в панели инструментов также согласуются с рекомендациями руководства по разработке приложения интерфейса Windows. Эти цвета не следует задаватьы и изменяются динамически в ответ на настройки пользователя на панели управления.

Элемент

Значение ЦВЕТ Windows

RGB по умолчанию

Фон панели инструментов

COLOR_BTNFACE

RGB (192,192,192)

Верхний/левые края кнопок панели инструментов

COLOR_BTNHIGHLIGHT

RGB (255,255,255)

Программа-робот кнопок панели инструментов и правого края

COLOR_BTNSHADOW

RGB (128,128,128)

Кроме того, кнопки панели инструментов recolored растрового изображения, как если бы они были стандартными элементами управления кнопку Windows. Это recoloring возникает, когда растровое изображение загружается из ресурса и в ответ на изменение цвета системы в ответ на настройки пользователя на панели управления. Следующие цвета в растровом изображении инструмента будут recolored автоматически, поэтому следует использовать с осторожностью. Если вы не желаете быть частью recolored растрового изображения, используйте цвет, тесно приближается одно из сопоставленных RGB-значений. Сопоставление, созданное на основе точные RGB-значениях.

RGB-значение

Динамически, сопоставленного ЦВЕТ значение

RGB (000, 000, 000)

COLOR_BTNTEXT

RGB (128, 128, 128)

COLOR_BTNSHADOW

RGB (192, 192, 192)

COLOR_BTNFACE

RGB (255, 255, 255)

COLOR_BTNHIGHLIGHT

См. в описании класса CToolBarссылку библиотеки классов подробные сведения о API создания и настройки CToolBar. Настройка большинство инструментов должна быть создана до инструмент изначально становится видимой.

API настройки можно использовать для настройки идентификаторы кнопки, стиль, ширину и разделители, которые отображают глиф/используются для какой кнопки. По умолчанию нет необходимости использовать эти API.

Поддержка CCmdUI для CToolBar

Способ кнопки панели инструментов всегда обновляется через механизм ON_UPDATE_COMMAND_UI. На панели инструментов простоя, вызывает обработчик ON_UPDATE_COMMAND_UI с идентификатором команды этой кнопки. ON_UPDATE_COMMAND_UI не вызывается для разделителей, но вызывается для кнопок и кнопок флажка.

Обработчик ON_UPDATE_COMMAND_UI может вызвать:

  • Включить: Включить или отключить кнопку. Это работает, одинаково для кнопок и кнопок флажка.

  • SetCheck: Задать состояние проверки кнопки. При вызове этого для кнопки панели инструментов, его в кнопку флажка. SetCheck принимает параметр, который может быть 0 (не установлен флажок), (1) или 2 (непредвиденный)

  • SetRadio: Сокращенной записью для SetCheck.

Кнопки " флажок «АВТОМАТИЧЕСКИЕ кнопки» флажок "; то есть, если пользователь нажимает их их немедленно, изменяет состояние. Функция checked спуск или отжатое состояние. Нет встроенным способом интерфейса пользователя изменить размер кнопки в «непредвиденное состояние»; это необходимо сделать в коде.

API настройки позволят вам изменить состояние заданного кнопки панели инструментов следует, необходимо изменить эти состояния в обработчике ON_UPDATE_COMMAND_UI для команды кнопки панели инструментов представляет. Помните, что обработка бездействия изменяет состояние кнопок панели инструментов с обработчиком ON_UPDATE_COMMAND_UI, поэтому все изменения этих записей состояния через SetButtonStyle можно потерять после предыдущего циклов.

Кнопки панели инструментов отправляют сообщения WM_COMMAND как обычные кнопки и пункты меню и обычно обрабатываются обработчиком ON_COMMAND в том же классе, который предоставляет обработчик ON_UPDATE_COMMAND_UI.

4 Стиля кнопки панели инструментов (значения TBBS_), используемых для состояний отображения.

  • TBBS_CHECKED:   Флажок в настоящее время проверяется (вниз).

  • TBBS_INDETERMINATE:   Флажок в настоящее время определенного.

  • TBBS_DISABLED:   Кнопка в данный момент запрещена.

  • TBBS_PRESSED:   Кнопка в данный момент отжата.

6 Стилей кнопки руководства по разработке приложения интерфейса Windows должностного лица представлены следующими значениями TBBS:

  • Вверх = 0

  • = (TBBS_PRESSED мыши вниз| любой другой стиль)

  • Отключенный = TBBS_DISABLED

  • = TBBS_CHECKED вниз

  • Вниз запрещено = TBBS_CHECKED | TBBS_DISABLED

  • Непредвиденный = TBBS_INDETERMINATE

CDialogBar

Диалоговая панель панель элементов управления, содержащую стандартные элементы управления Windows. Она действует как диалоговое окно, так как она содержит элементы управления и поддерживает переходы между ними. Она также действует как диалоговое окно, так как она использует шаблон диалоговых окон для представления панели.

CDialogBar используется для панели инструментов предварительного просмотра, содержащий стандартные элементы управления кнопки.

С помощью CDialogBar похоже на использование CFormView. Необходимо определить шаблон диалоговых окон для двух панелей и удалить все стили, за исключением WS_CHILD. Обратите внимание, что диалоговое окно не должен отображаться.

Уведомления элемента управления для CDialogBar отправляются на родительский элемент панели элементов управления (как и кнопки панели инструментов).

Поддержка CCmdUI для CDialogBar

Кнопки диалоговой панели должны обновляться через механизм обработчика ON_UPDATE_COMMAND_UI. Во время бездействия, диалоговая панель вызывает обработчик ON_UPDATE_COMMAND_UI с идентификатором команды всех кнопок, имеют идентификатор >= 0x8000 (т е диапазона идентификаторов команд).

Обработчик ON_UPDATE_COMMAND_UI может вызвать:

  • Включение: включить или отключить кнопку.

  • SetText: изменить текст кнопки.

Настройки можно сделать с помощью стандартных интерфейсов API диспетчера окна.

См. также

Другие ресурсы

Технические примечания по номеру

Технические примечания по категории