- •Процедурное программирование
- •Регистрация класса окна
- •Создание окна
- •Командная строка приложения
- •Функции окна приложения
- •Сообщение wm_destroy
- •Вывод в рабочую область окна
- •Контекст устройства и область отрисовки.
- •Сообщение wm_paint
- •Окно-список
- •Заполнение окна-списка
- •Список файлов
- •Изменение цвета органов управления
- •Комбинированный список
- •Меню и назначение клавиш
- •Создание описания меню в файле ресурсов
- •Сообщения меню
- •Диалоговые окна ( диалоги )
- •Определение диалоговых окон в файле ресурсов
- •Диалоговое окно About
- •Функция диалогового окна
- •Взаимодействие с органами управления диалоговых окон
- •Окно сообщений
- •Ввод данных
- •Извлечение данных из диалога
- •Ввод - вывод данных посредством передачи сообщений
- •Функция CreateFile ( )
- •Функция WriteFile ( )
- •Отображение файла в память
- •Функция CreateFileMapping().
- •Функция MapViewOfFile()
- •Работа с отображенным файлом
- •И н т е р ф е й с графических устройств (gdi)
- •Контекст устройства
- •Получение индекса контекста устройства
- •Получение информации из контекста устройства
- •Атрибуты контекста устройства
- •Сохранение изменений в контексте устройства
- •Система координат в Windows
- •Режимы отображения
- •Системы координат
- •Режим mm_text
- •Метрические режимы
- •Режим mm_isotropic
- •Режим mm_anisotropic
- •Вывод графических объектов
- •Двумерные объекты
- •Сегмент и сектор эллипса
- •Библиографический список
Комбинированный список
Комбинированный список («combobox») – это объединения окна–списка и строки редактирования. Эти два объекта работают в паре: в строке редактирования может быть введен новый элемент или помещен один из существующих.
Описания стандартных типов этого объекта:
CBS_SIMPEL
Простейший тип комбинированного списка: список отображается всё время, и текущее выделение отслеживается среди элементов списка.
CBS_DROPDOWN
То же, что и CBS_SIMPEL, но список не отображается до тех пор, пока пользователь не нажмет на левую кнопку мыши на стрелке вниз, расположенный справа от строки редактирования. При этом окно–список как бы «выпадает» из строки редактирования.
CBS_DROPDOWNLIST
То же, что и CBS_DROPDOWN, но строка редактирования заменяется на статическую текстовую строку: в ней отображается текущий выбор из списка, но отредактировать его (если это текст) нельзя.
CBS_HASSTRING
Этот тип комбинированных списков является пользовательским: функция родительского окна отвечает за наполнение списка, однако на них накладывается ограничение: элементы, которые вы помещаете в список, должны быть текстовыми строками. Управление низкого уровня, тем не менее, осуществляется стандартной функцией комбинированного окна; пользователь лишь помещает в окно элементы и извлекает текущий выбор (сообщение LB_GETTEXT).
CBS_OWNERDRAWFIXED
Элементы списка отрисовываются пользователем; их высота, тем не менее, одинакова.
CBS_OWNERDRAWVARIABLE
Элементы списка отрисовываются пользователем; их высота может быть различной.
CBS_OEMCONVERT
Вводимый в окно текст сначала преобразуется из таблицы ANSI в таблицу OEM, а затем обратно, после чего отображается на экране. Это гарантирует правильный перевод из одной таблицы в другую, например, при указании в строке редактирования имени файла DOS. Этот стиль, как правило, используются только совместно с или .
CBS_AUTOSCROLL
Если длина строки текста в строке редактирования превышает размеры окна, то осуществляется автоматическая горизонтальная прокрутка окна вправо и влево. Если этот флаг не установлен, ввести текст, превышающий размеры окна, невозможно.
Меню и назначение клавиш
Работа с меню в Windows – одно из самых простых и понятных мест. Для создания меню вам просто нужно:
Задать структуру меню в файле ресурсов, последовательно определив пункты меню в виде текстовых строк.
Каждому пункту меню поставить в соответствие уникальный идентификатор.
Указать имя меню в структуре класса окна.
Как вы уже понимаете, для функции окна неважно, каким образом пользователь выбрал команду – при помощи последовательно нажатий клавиш (Alt, стрелка вправо, ... , Enter, стрелка вниз, ... , Enter), мышью или просто нажатием назначенных на пункт меню комбинацией клавиш (например, копируете текст в «почтовый ящик» – Clipboard – нажатием Ctrl / Ins ).
Когда пользователь выбирает пункт меню, Windows передает приложению сообщение WM_COMMAND, содержащее идентификатор выбранного пункта, так что после определения структуры меню в файле ресурсов нужно оформить собственно текст программы – вывести обработку сообщения WM_COMMAND.
Меню главного окна размещается непосредственно под заголовком окна; это старший уровень меню приложения, поэтому его иногда называют главным меню. Пункты главных меню могут является заголовками «падающих» меню, которые, в свою очередь, могут быть заголовками «всплывающих» меню. Пункты меню верхнего уровня могут быть активные, неактивные, отмеченными или отображается серым цветом.
Отображение серым цветом и неактивность меню – разные вещи; пункт может отображаться нормально, но быть неактивным (DESABLED). Однако, если пункт отображается серым цветом (GRAYED), то он всегда неактивен; мы рекомендуем вам пользоваться именно этим состоянием, поскольку иначе пользователь не может определить активен пункт или нет.
Меню может быть создано двумя различными способами: описанием в файле ресурсов и функциями динамической работы с меню, т.е. непосредственно из самой программы, в процессе её работы. Чаще всего используются оба способа: при создании программы в файле ресурсов определяется одно или несколько меню, а в процессе работы по мере необходимости одно меню может быть заменено другим или изменены некоторые свойства текущего меню (пункты могут быть динамически добавлены, убраны, отмечены, выделены серым цветом и т.п.).