TN031: Регулятор тактів

Цієї записці описується керування Бар класів у MFC: на загальних CControlBar, CStatusBar, CToolBar, CDialogBarі CDockBar.

CControlBar

ControlBar є CWnd-отриманих класу,:

Регулятор тактів підтримує додаткові стилі:

Класи, отриманих від CControlBar забезпечити більш цікавим реалізацій:

Всі контролю бар об'єктів/windows буде дитина windows деякі вікна батьківського кадру. Зазвичай вони додаються як брат з до клієнтської області кадру (наприклад, що MDI клієнта або подання). Вікно-ID дитини контролю бар має важливе значення. За замовчуванням макета панель керування працює тільки для керування барів з ідентифікаторами в діапазоні від AFX_IDW_CONTROLBAR_FIRST до AFX_IDW_CONTROLBAR_LAST. Зауважте, що, хоча є ряд 256 контроль Бар ідентифікатори, перші 32 ці контроль Бар ідентифікатори, спеціальні, тому вони підтримуються безпосередньо архітектура режиму попереднього перегляду.

CControlBar клас дає стандартний виконання

C++ контроль Бар об'єкти зазвичай бути вбудовані, як члени CFrameWnd отриманих клас і буде очищений коли знищені, так HWND і об'єкт. Якщо потрібно виділити об'єкта панель керування в купі, можна просто встановити m_bAutoDestruct член ВІРНО зробити на контроль Бар»Видалити це"коли знищені HWND.

Важливо   Якщо ви створили свій власний CControlBar-похідних класів, а не за допомогою одного з MFC, отриманих класи, такі як CStatusBar, CToolBarабо CDialogBar, то вам потрібно встановити компонент даних m_dwStyle . Це може бути зроблено в перекрити Створити:

 / / CMyControlBar походить від CControlBar
BOOL CMyControlBar::Create (CWnd * pParentWnd, DWORD dwStyle, UI&NT nID)
{
 nbsp; m_dwStyle = dwStyle;

.
   .
   .
}

Алгоритм макет контроль Бар

Алгоритм макет панелі керування це дуже просто. Рамка вікна надсилає повідомлення WM_SIZEPARENT всіх дітей в межах панелі керування. Поряд з цього повідомлення передається вказівник на батьків клієнт прямокутник. Це повідомлення надсилається до дітей в Z-послідовності. Панель управління діти використовують цю інформацію, позиціонувати себе та зменшити розмір області клієнта батьків. Остаточний прямокутник, що залишилося для нормального клієнтської області (менше контролю бар) використовується для розташування вікна головний клієнт (як правило клієнт, подання або спліттер вікна MDI).

По подробиці дивись CWnd::RepositionBars і CFrameWnd::RecalcLayout.

MFC Windows лічку, включаючи WM_SIZEPARENT, описані у технічних примітці 24.

CStatusBar

Рядок стану знаходиться панель управління, яка має ряд областей вихідний текст. Існує два поширених способи використання області виводу тексту:

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

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

Елемент Значення КОЛЬОРУ Windows За промовчанням RGB
Статус Бар фону COLOR_BTNFACE RGB (192, 192, 192)
Текст рядка стану COLOR_BTNTEXT RGB (000, 000, 000)
Статус Бар top/ліві краї COLOR_BTNHIGHLIGHT RGB (255, 255, 255)
Бот/правого країв, рядок стану COLOR_BTNSHADOW RGB (128, 128, 128)

CCmdUI підтримки CStatusBar

Чином, показники зазвичай оновлюється це через ON_UPDATE_COMMAND_UI механізму. На час простою у рядку стану буде викликати ON_UPDATE_COMMAND_UI обробника з рядка ID області індикатора.

Обробник ON_UPDATE_COMMAND_UI можна зателефонувати:

Будь ласка, зверніться до класу CStatusBar в Класі бібліотеки посилання деталі щодо CStatusBar створення та настроювання API. Більшість налаштування статус барів має бути зроблено до рядку стану спочатку зробили видимими.

У рядку стану підтримує лише одну область, еластичною, зазвичай першої області. Розмір ця область є дійсно мінімальний розмір. Якщо рядок стану більше ніж мінімальний розмір усіх областях, будь-які додаткові ширина буде надано області була еластичною. За промовчанням застосунок з рядка стану має правим краєм показників для CAP, NUM і SCRL з першої області є еластичні.

CToolBar

Панель інструментів-це контролю бар з рядок точковий рисунок кнопки, які можуть включати роздільники. Підтримуються два стилі кнопки: прапорець кнопки і pushbuttons. Радіо функціональні групи можуть бути побудовані з прапорець кнопки та ON_UPDATE_COMMAND_UI.

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

Кожна кнопка має бути того ж розміру. За промовчанням вибрано стандартний 24 х 22 пікселів. Кожне зображення гліфів має бути того ж розміру і повинні бути бік-о-пліч у малюнка. За замовчуванням розмір зображення/гліфів — 16 х 15 пікселів. Таким чином, для панелі інструментів з 10 кнопками (з використанням стандартних розмірів), ви повинні крапковий малюнок, що 160 пікселів і 15 пікселів.

Кожна кнопка має лише один зображення/гліфів. Різні кнопки держави та стилі (наприклад, натиснута, вгору, вниз, вимкнуто, відключено вниз, не визначено) algorithmically генеруються з цього одного зображення/гліфів. Будь-який DIB або крапкового колір використовується в теорії. Алгоритм для генерації різних кнопку держави працює найкраще, якщо вихідне зображення відтінки сірого. Подивіться на кнопки панелі інструментів Стандартна та інструментів кнопку картинки у MFC Генеральний зразок КАРТИНКИ для прикладу.

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

Елемент Значення КОЛЬОРУ Windows За промовчанням RGB
Фон панелі COLOR_BTNFACE RGB(192,192,192)
Панель інструментів кнопки верхній/ліві краї COLOR_BTNHIGHLIGHT RGB(255,255,255)
Панель інструментів кнопки Бот/правого країв COLOR_BTNSHADOW RGB(128,128,128)

Крім того, точковий рисунок кнопки панелі інструментів є закладку, як ніби вони стандартний Windows кнопки управління. Цей Перефарбування виникає, коли на бітові завантажується з ресурс і у відповідь на зміни в системні кольори у відповідь на користувача настройка за допомогою панелі керування. Наступні кольори крапкового малюнка інструментів буде закладку автоматично, тому вони повинні бути використані з обережністю. Якщо ви не хочете, щоб частину вашого растрові, зміни кольору, потім за допомогою кольору, оптичного один зіставлений 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 Клас бібліотеки посилання деталі щодо CToolBar створення та настроювання API. Більшість налаштування панелей інструментів має бути зроблено до панелі інструментів спочатку зробили видимими.

Налаштування API можуть бути використані для налаштування кнопки ідентифікатори, стилі, spacer ширину та які зображення гліфів використовується за те, що кнопки. За промовчанням не потрібно використовувати ці API.

CCmdUI підтримки CToolBar

Так, як завжди оновлюється кнопки панелі інструментів є через ON_UPDATE_COMMAND_UI механізму. На час простою панель інструментів буде викликати обробник ON_UPDATE_COMMAND_UI з команди ID цієї кнопки. ON_UPDATE_COMMAND_UI не закликав розділювачі, але вона називається pushbuttons і кнопки прапорець.

Обробник ON_UPDATE_COMMAND_UI можна зателефонувати:

Прапорець кнопки є "Авто" прапорець кнопки; тобто, коли користувач натискає їх вони буде негайно змінити стан. Перевірив це вниз, або пригнічений стан. Існує немає вбудованої користувача інтерфейс спосіб змінити кнопки в "невизначені" держави; що має бути зроблено через код.

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

Кнопки панелі інструментів буде відправити WM_COMMAND повідомлення, як нормальний кнопку чи елемент меню і зазвичай обробляються того ж класу, яка надає ON_UPDATE_COMMAND_UI обробника обробника ON_COMMAND.

Є чотири інструментів кнопку стилів (TBBS_ значення) використовується для відображення держав:

Шість офіційних стилі Windows інтерфейс додатків дизайн керівництво кнопки представлених нижче значення TBBS:

CDialogBar

Діалогове вікно Бар є контроль Бар, що містить стандартні елементи керування Windows. Він діє як діалогове вікно, в тому, що воно містить елементи керування та підтримує табуляції між ними. Він також виступає як діалогове вікно, в тому, що вона використовує шаблон діалоговому представляти Бар.

CDialogBar використовується для попереднього перегляду панель, яка містить стандартні pushbutton елементи керування.

За допомогою CDialogBar , як за допомогою CFormView. Ви повинні визначити шаблон діалогове вікно для бару діалогове вікно і видалити всі стилі, крім WS_CHILD. Зауважте, що діалогове вікно повинні бути не видимі.

Повідомлення про керування CDialogBar буде надіслано до батьківського контролю бар (як кнопки панелі інструментів).

CCmdUI підтримки CDialogBar

Кнопки панелі діалогове вікно має бути оновлена через механізм обробника ON_UPDATE_COMMAND_UI . На час простою, Бар діалогове вікно буде викликати обробник ON_UPDATE_COMMAND_UI з команди ID всі кнопки, які мають Ідентифікатор > = 0x8000 (тобто, в діапазоні команда ідентифікаторів).

Обробник ON_UPDATE_COMMAND_UI можна зателефонувати:

Налаштування можна зробити за допомогою стандарту віконний менеджер API для.

Технічні примітки за номером |nbsp; Технічні примітки за категоріями

Index