
- •Процедурное программирование
- •Регистрация класса окна
- •Создание окна
- •Командная строка приложения
- •Функции окна приложения
- •Сообщение wm_destroy
- •Вывод в рабочую область окна
- •Контекст устройства и область отрисовки.
- •Сообщение wm_paint
- •Окно-список
- •Заполнение окна-списка
- •Список файлов
- •Изменение цвета органов управления
- •Комбинированный список
- •Меню и назначение клавиш
- •Создание описания меню в файле ресурсов
- •Сообщения меню
- •Диалоговые окна ( диалоги )
- •Определение диалоговых окон в файле ресурсов
- •Диалоговое окно About
- •Функция диалогового окна
- •Взаимодействие с органами управления диалоговых окон
- •Окно сообщений
- •Ввод данных
- •Извлечение данных из диалога
- •Ввод - вывод данных посредством передачи сообщений
- •Функция CreateFile ( )
- •Функция WriteFile ( )
- •Отображение файла в память
- •Функция CreateFileMapping().
- •Функция MapViewOfFile()
- •Работа с отображенным файлом
- •И н т е р ф е й с графических устройств (gdi)
- •Контекст устройства
- •Получение индекса контекста устройства
- •Получение информации из контекста устройства
- •Атрибуты контекста устройства
- •Сохранение изменений в контексте устройства
- •Система координат в Windows
- •Режимы отображения
- •Системы координат
- •Режим mm_text
- •Метрические режимы
- •Режим mm_isotropic
- •Режим mm_anisotropic
- •Вывод графических объектов
- •Двумерные объекты
- •Сегмент и сектор эллипса
- •Библиографический список
Список файлов
В большинстве случаев окно-список используют, чтобы дать возможность пользователям выбрать файл с диска. Чтобы заполнить окно–список именами файлов и каталогов, приложение должно передать окну-списку сообщение LB_DIR:
SendMessage ( hListWnd, LB_DIR, wAttr, (LONG) lpszFileSpec);
Младший байт параметра wAttr определяет атрибуты файлов, отображаемых в окне–списке.Они идентичны с атрибутами файлов MS–DOS:
-
wAttr
Атрибуты файлов
0x0000
0x0001
0x0002
0x0004
0x0010
0x0020
Обычные файлы
Файлы только для чтения
Скрытые файлы
Системные файлы
Подкаталоги
Бит архивации (установлен, когда файл не выгружен)
Старший байт переменной wAttr обеспечивает дополнительные возможности управления списком файлов:
-
wAttr
Опция
0х4000
0х8000
Добавить символ устройства
Только поиск
Например, для того чтобы включить в окно-список все файлы, подкаталоги и символы устройств (литеры дисководов), переменная wAttr должна быть равна 0x4037.
Можно включить в список файлов только файлы с определенным расши–рением. Для этого параметр lParam сообщения LB_DIR содержит дальний указатель на строку, содержащую шаблон имени файла для поиска на дисках. Например, если параметр lParam сообщения указывает на строку «*с», то в список файлов будут включены только файлы с расширением «с». Параметр lParam не влияет на каталоги, содержащиеся в списке файлов.
Заметим, что символы дисковых устройств отображаются в следующем формате (диск А: ): [-A-]
Элемент «[..]» списка файлов позволяет переместиться на более высокий уровень каталога, а элемент, имеющий формат [SUBDIR], обозначает каталоги.
Windows не имеет функций для поиска файлов по шаблону, но их можно моделировать, создав окно-список файлов, не отображая его на экране. Для этого достаточно не использовать тип WS_VISIBLE при создании окна и, когда поиск файлов произведен, уничтожить окно-список, вызвав функцию DestroyWindow.
Изменение цвета органов управления
Для этого требуется специальная обработка сообщения WM_CTLCOLOR.
Это сообщение стандартные органы управления посылает функции родительского окна перед тем, как перерисовать изображение органа управления на экране.
Когда функция родительского окна получает сообщение WM_CTCOLOR, то в параметре wParam хранится дескриптор контекста устройства дочернего окна, в младшем слове параметра lParam – дескриптор самого дочернего окна, а в старшем слове параметра lParam при помощи предопределенных констант кодируется тип окна (органа управления):
Константа |
Тип окна |
CTLCOLOR_MSGBOX CTLCOLOR_EDIT CTLCOLOR_LISTBOX CTLCOLOR_BTN CTLCOLOR_DLG CTLCOLOR_SCROLLBAR CTLCOLOR_STATIC |
Окно – сообщение Окно – редактор Окно – список Окно – кнопка ( переключатель ) Диалоговое окно Полоса прокрутки Статический орган управления |
То, что в параметре сообщения WM_CTLCOLOR содержится дескриптор контекста устройства, означает что можно изменять цвет дочернего окна – органа управления. В самом деле, любая функция GDI осуществляет действие именно над контекстом устройства, а он–то в сообщении WM_CTLCOLOR принадлежит органу управления.
Обрабатывая сообщение, необходимо проделать 3 операции:
Установить цвет фона при помощи функции SETBKCOLOR.
Установить цвет текста при помощи функции SETTEXTCOLOR.
Возвратить дочернему окну манипулятор той кисти, которой вы хотите отрисовать этот орган управления.
Однако у кисти, которая является шаблоном некоторой цветных пикселов, есть начальная точка – точка повторения шаблона. И если одну и туже кисть использовать для двух разных окон (например, для родительского и дочернего), то на их границе двух шаблоны стыковаться на будут. Для того чтобы избежать это, следует:
Вызовом функции UnrealizeObject «сбросить» начальную точку кисти, что приведет к тому, что при следующем выборе ее в контекст устройства она будет установлена заново.
Установит новую начальную точку кисти функцией SetBrushOrg; новая начальная точка будет установлена при следующем выборе кисти в контекст устройства.
Таким образом, можно установить цвет дочерних окон – органов управления.