- •Часть II. Проектирование пользовательских интерфейсов средствами win32 api п 1. Основы приложений для Windows. П 1.1 Типы данных Windows.
- •П. 1.2 Главная функция приложения WinMain().
- •П. 1.3 Оконная функция.
- •П. 1.4 Сообщения от окна
- •П. 1.5 Сообщения от мыши
- •1.5.1 Сообщения мыши, связанные с рабочей областью окна
- •1.5.3 Двойные щелчки мыши
- •1.5.4 Сообщения мыши, связанные с нерабочей областью окна
- •1.5.5 Захват мыши
- •П. 1.6 Сообщения от клавиатуры
- •1.6.1 Синхронизация событий клавиатуры
- •1.6.2 Игнорирование событий клавиатуры
- •1.6.3 Понятие фокуса ввода
- •1.6.4 Категории клавиатурных сообщений
- •1.6.5 Аппаратные сообщения
- •1.6.6 Символьные сообщения
- •П. 1.7 Таймеры Windows и служба времени.
- •П. 1.8 Классы окон
- •1.8.1. Описание используемых классом окон ресурсов
- •1.8.2. Регистрация класса окон
- •1.8.3. Создание окон
- •1.8.4. Стили окна
- •П. 1.9 Цикл обработки сообщений
- •П. 1.10 Структура текста приложения
- •П. 1.11 Вспомогательные функции создания окон
- •1.11.1 Функции отображения и перерисовки окон
- •1.11.2 Функции поиска и определения состояния окон
- •1.11.3 Функции перемещения окон
- •1.11.4 Сообщения приложения для пользователя
- •П. 1.12 Примеры создания окон
- •П 2. Органы управления
- •П 2.1. Кнопки
- •2.1.1. Создание кнопок
- •2.1.2. Кнопки и сообщения
- •2.1.3. Флажки и переключатели
- •П 2.2. Статический орган управления
- •П 2.3. Полоса прокрутки
- •2.3.1. Общие сведения
- •2.3.2. Создание полосы прокрутки
- •2.3.3. Простейшие полосы прокрутки
- •2.3.4. Сообщения от полосы прокрутки
- •2.3.5. Управление полосой прокрутки
- •П 2.4 Редактор текста
- •2.4.1. Создание редактора
- •2.4.2. Сообщения для редактора текста
- •2.4.3. Сообщения от редактора текста
- •П 2.5. Списки строк
- •2.5.1. Создание списка
- •2.5.2. Сообщения от списка
- •2.5.3. Сообщения для списка
- •П. 2.6. Комбинированный список
- •2.6.1. Создание комбинированного списка
- •2.6.2. Коды извещения
- •2.6.3. Сообщения для комбинированного списка
- •П 3. Вывод в окно
- •П. 3.1. Виды контекста отображения
- •П 3.2. Сообщение wm_paint
- •П 3.3. Установка атрибутов контекста отображения для текста
- •П 3.4. Вывод текста
- •3.4.1. Настройка параметров шрифта
- •3.4.2. Выбор шрифта в контекст отображения
- •3.4.3. Функции вывода текста
- •3.4.4. Определение метрик шрифта
- •П 3.5. Рисование геометрических фигур
- •3.5.1 Установка атрибутов контекста отображения для рисования.
- •3.5.1. Функции рисования точки
- •3.5.2. Функции рисования линий
- •3.5.3. Функции рисования замкнутых фигур
- •3.5.4 Функции создания и рисования регионов
- •П. 4 Ресурсы приложения и их использование. П. 4.1 Файл ресурсов.
- •П 4.2 Главное меню
- •П. 4.2.1 Элементы меню
- •П. 4.2.2 Создание меню
- •П. 4.2.3 Сообщения от меню
- •П. 4.3. Плавающее меню
- •П. 4.4. Акселераторы
- •П. 4.5. Панель инструментов
- •4.5.1. Создание панели инструментов
- •4.5.2. Управление состоянием кнопок панели
- •4.5.3. Вывод подсказок в панели инструментов
- •П. 4.6. Строка состояния
- •4.6.1. Создание строки состояния
- •4.6.2. Сообщения о меню в строке состояний
- •П 5. Диалоговые панели п. 5.1. Характеристики диалоговых панелей
- •5.1.1. Единицы диалоговой панели '
- •5.1.2. Стили диалоговой панели
- •5.1.3. Функция окна диалоговой панели
- •П. 5.2. Создание диалоговой панели
- •5.2.1 Создание окна модальной диалоговой панели
- •5.2.2 Создание окна немодальной диалоговой панели
- •П. 5.3 Разработка и компоновка диалоговых панелей.
- •П. 5.4 Сообщения и диалоговые панели
- •П. 5.5. Стандартные диалоговые панели
- •5.5.1. Панели для открытия или сохранения файлов
- •5.5.2. Панель для выбора цветов
- •5.5.3. Панель для выбора шрифта
2.1.3. Флажки и переключатели
Важной разновидностью кнопок являются флажки и переключатели. Их используют для выбора режима работы приложения.
В приложениях переключатели стилей BS_RADIOBUTTON и BS_AUTORADIOBUTTON используют аналогично кнопкам переключения диапазонов в радиоприемнике. В одной группе располагают несколько таких "радиопереключателей", причем включенным может быть только один из них. Такие переключатели называют переключателями с зависимой фиксацией. Включение одного переключателя в группе вызывает выключение остальных.
Флажки BS_CHECKBOX, BS_AUTOCHECKBOX, BS_3STATE, BS_AUT03STATE используют как отдельные независимые флажки. В группе флажков одновременно могут быть включены несколько флажков.
С переключателем стиля BS_AUTORADIOBUTTON и флажком стиля BS_AUTOCHECKBOX работают так же, как и с кнопками стиля BS_PUSHBUTTON или BS_DEFPUSHBUTTON. При нажатии левой клавишей мыши такой переключатель или флажок автоматически изменяет свое состояние. При этом неперечеркнутый квадратик становится перечеркнутым и, наоборот, перечеркнутый квадратик становится неперечеркнутым. Состояние переключателя отмечается жирной точкой. При изменении состояния флажка или переключателя родительское окно получает сообщение WM_COMMAND с кодом извещения BN_CLICKED.
Флажок стиля BS_3STATE или BS_AUT03STATE внешне похож на флажок стиля BS_CHECKBOX, но дополнительно имеет третье состояние. В этом третьем состоянии он изображается серым цветом и может использоваться, например, для индикации недоступного для установки параметра.
Слово AUTO в названии стиля используют для обозначения режима автоматической перерисовки переключателя при изменении его состояния.
П 2.2. Статический орган управления
Статический орган управления - это окно класса "static". Он не посылает родительскому окну сообщение WM_COMMAND. Этот орган управления используют для оформления внешнего вида родительского окна. Статический орган управления имеет вид закрашенного или не закрашенного прямоугольника или строк текста в заданном прямоугольнике (табл.8). Статические органы управления могут использоваться внутри диалоговых панелей для отображения пиктограмм.
Для создания статического органа управления вызывают функцию CreateWindow. В качестве первого параметра указывают "static".
Следующий оператор демонстрирует создание статического органа управления:
HWND hStatic = CreateWndow("static", NULL,
WS_CHILD | WS.VISIBLE | SS_BLACKFRAME,
20,40,100,50, hwnd, (HMENU)O, hInstance.NULL);
Второй параметр определяет текст, который будет расположен внутри органа управления. Если текст не используется, этот параметр указывают как NULL.
В третьем параметре указывают один из стилей статического органа управления. В примере указан стиль SS_BLACKFRAME, т. е. статический орган представляет собой прямоугольную рамку системного цвета COLOR_ WINDOWFRAME ("черного" цвета рамок окон). Внутренняя область прямоугольника остается незакрашенной. Текст заголовка окна при этом стиле статического органа не используют. Соответствующий параметр функции CreateWindow указан как NULL.
Так как статический орган управления не посылает сообщения родительскому окну, в качестве девятого параметра (идентификатор органа управления) можно указать любое число, например 0.
Стили статического органа управления определяют внешний вид и применение органа (табл.8). Статические органы управления удобно использовать для вывода текста.