- •Процедурное программирование
- •Регистрация класса окна
- •Создание окна
- •Командная строка приложения
- •Функции окна приложения
- •Сообщение wm_destroy
- •Вывод в рабочую область окна
- •Контекст устройства и область отрисовки.
- •Сообщение wm_paint
- •Окно-список
- •Заполнение окна-списка
- •Список файлов
- •Изменение цвета органов управления
- •Комбинированный список
- •Меню и назначение клавиш
- •Создание описания меню в файле ресурсов
- •Сообщения меню
- •Диалоговые окна ( диалоги )
- •Определение диалоговых окон в файле ресурсов
- •Диалоговое окно About
- •Функция диалогового окна
- •Взаимодействие с органами управления диалоговых окон
- •Окно сообщений
- •Ввод данных
- •Извлечение данных из диалога
- •Ввод - вывод данных посредством передачи сообщений
- •Функция CreateFile ( )
- •Функция WriteFile ( )
- •Отображение файла в память
- •Функция CreateFileMapping().
- •Функция MapViewOfFile()
- •Работа с отображенным файлом
- •И н т е р ф е й с графических устройств (gdi)
- •Контекст устройства
- •Получение индекса контекста устройства
- •Получение информации из контекста устройства
- •Атрибуты контекста устройства
- •Сохранение изменений в контексте устройства
- •Система координат в Windows
- •Режимы отображения
- •Системы координат
- •Режим mm_text
- •Метрические режимы
- •Режим mm_isotropic
- •Режим mm_anisotropic
- •Вывод графических объектов
- •Двумерные объекты
- •Сегмент и сектор эллипса
- •Библиографический список
Окно-список
Окно-список представляет собой прямоугольник, внутри которого находится листаемый список из текстовых строк. Пользователь может выделять строки списка при помощи курсора. Окно-список может использоваться для просмотра и выбора элементов древовидного списка , например имен файлов на диске.
Программа может добавлять и удалять отдельные строки списка, передавая специальные сообщения функции окна-списка. Эти сообщения будут описаны ниже. Окно-список, в свою очередь, передает сообщение WM_COMMAND функции родительского окна при выборе пользователем элемента списка с помощью клавиш PageUp, PageDown, клавиш управления курсором или мышью.
Как и все органы управления, описанные выше, окно-список является дочерним окном. Для создания окна-списка необходимо воспользоваться предопределенным классом окна «listbox». По умолчанию окно-список не передает сообщения WM_COMMAND при выборе элемента списка. Чтобы сообщение передавалось, добавьте идентификатор LBS_NOTIFY к типам окна-списка. Если требуется, чтобы элементы списка изображались в алфавитном порядке, при создании окна указывается флаг LBS_SORT. По умолчанию окно-список отображается без рамки и без вертикальной полосы просмотра. Чтобы отобразить рамку и полосу просмотра, используйте идентификаторы WS_BORDER и WS_VSCROLL. Можно использовать также типы окон WS_SIZEBOX и WS_CAPTION, описанные выше.
Приведем полный перечень флагов окна-списка:
LBS_EXTENDEDSEL
В оке-списке, пользуясь клавишами Shift, мышью или другими комбинациями клавиш, можно делать множественный выбор.
LBS_HASSTRINGS
Определяет «пользовательское» окно-список, т.е. список, который может содержать произвольные строки. Функция окна-списка поддерживает это окно (управляет памятью под строки, скроллингом строк и т.п.). Приложение может заполнять строками окно-список и извлекать из него строки при помощи сообщения LB_GETTEXT.
LBS_MULTICOLUMN
Определяет многостолбцовое окно-список, которое может осуществлять горизонтальный скроллинг. При помощи сообщения LB_SETCOLUMNWIDTH можно устанавливать количество столбцов.
LBS_MULTIPLESEL
Окно-список множественного выбора: нажатием на клавишу мыши или пробел состояние элемента списка меняется с выбранного на невыбранное и наоборот вне зависимости от состояния других элементов.
LBS_NOINTEGRALHEIGHT
Размер окна-списка в точности равен размеру, указанному при создании окна-списка (обычно Windows слегка подгоняет размер окна-списка так, чтобы отображалось целое число элементов).
LBS_NOREDRAW
Изменения, произведенные с самим списком, не отражаются автоматически в окне. Это состояние окна-списка весьма нетипично; оно может быть сброшено в любой момент посылкой сообщения WM_SETREDRAW.
LBS_NOTIFY
Родительское окно получает информацию о любом действии пользователя над списком.
LBS_OWNERDRAWFIXED
Отображение содержимого окна возлагается на функцию родительского окна; элементы окна-списка должны иметь одинаковую высоту.
LBS_OWNERDRAWVARIABLE
Отображение содержимого окна возлагается на функцию родительского окна; элементы окна-списка могут иметь разную высоту.
LBS_SORT
Строки-элементы окна-списка автоматически сортируются по алфавиту.
LBS_STANDART
Наиболее часто используемый стиль; является комбинацией флагов WS_BORDER, WS_VSCROLL, LBS_NOTIFY и LBS_SORT.
LBS_USETABSTOPS
При помещении в окно-список, символы табуляции заменяются на пробелы. По умолчанию один символ табуляции заменяется на 32 «диалоговые единицы». «Диалоговые единицы» исчисляются по высоте и ширине системного шрифта. Определить, чему равна диалоговая единица, можно при помощи функции GetDialogBaseUnits.
LBS_WANTKEYBOARDINPUT
Функция, ответственная за отрисовку окна-списка. Когда окно-список имеет фокус ввода, получает сообщения WM_VKEYTOITEM или WM_CHARTOITEM при любом нажатии клавиш. Этот стиль используется для сложной нестандартной обработки списков.