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

ПримечаниеПримечание

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

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

CControlBar

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Объекты области элементов управления C++ обычно будут внедрены в качестве членов производного класса CFrameWnd и будут очищены по будут уничтожены и родительские HWND когда объект.Если нужно выбрать объект области элементов управления в куче, можно просто задать элемент m_bAutoDestruct к Истина чтобы сделать область элементов управления «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 дополнительные сведения.

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

CStatusBar

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

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

    (например, стандартная линия сообщения справки меню).Эти обычно осуществляется на 0 индексирован

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

    (например, признаков КОНЦА, и SCRL (на цифровой клавиатуре).Эти обычно осуществляется идентификатором строки/команда

Шрифт для строки состояния 10 пунктов MS Sans Serif (руководство продиктованный разработке приложения интерфейса windows или соответствием модуля сопоставления шрифта наилучшей шрифта 10 швейцарцев точки пропорционального).В некоторых версиях 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 Стиля кнопки поддерживаются: кнопок и кнопок флажка.Функциональность группы radio можно построить с кнопками и ON_UPDATE_COMMAND_UI флажка.

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

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

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

Цвета, используемые в панели инструментов также согласованы с рекомендацией руководства по разработке приложения интерфейса 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 (не установлен), (проверить) или 2 (ожидается 1)

  • 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-интерфейсы диспетчера окон.

См. также

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

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

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