- •Часть 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.6. Комбинированный список
2.6.1. Создание комбинированного списка
Этот орган является комбинацией однострочного редактора текста и списка и создается на базе класса "Combobox". Комбинированный список создается так же, как и другие органы управления:
hComboBox = CreateWndow("ComboBox", NULL,
WS.CHILD | WS_VISIBLE | WS.VSCROLL | CBS.AUTOHSCROLL | CBS_SIMPLE,
30,30,200,200, hwnd, (HMENU) ID.COMBO, htnstance, NULL);
В стиле окон класса указывают символические имена с префиксом CBS_ (табл. 2.7).
2.6.2. Коды извещения
Комбинированный список посылает в функцию родительского окна сообщение WM_COMMAND. При этом младшее слово параметра wParam содержит идентификатор, а параметр IParam - дескриптор списка. Старшее слово параметра wParam содержит код извещения. Приведем список некоторых кодов извещений:
Код извещения
|
Описание
|
CBN CLOSEUP
|
Список исчез (стал невидим)
|
CBN DBLCLK. |
Двойной щелчок левой клавишей мыши по строке списка стиля CBS_SIMPLE |
CBN DROPDOWN |
Список стал видимым |
CBN EDITCHANGE |
Пользователь изменил содержимое окна редактирования и изменения отображены |
CBNEDITUPDATE |
Пользователь изменил содержимое окна редактирования, изменения не отображены |
CBN ERRSPACE |
Ошибка выделения дополнительной памяти |
CBN KILLFOCUS |
Список теряет фокус ввода |
CBNSELENDCANCEL |
Пользователь отменил выбор в списке |
CBNSELENDOK |
Пользователь выбрал строку в списке |
CBN _SELCHANGE |
Изменился номер выбранной строки |
CBN_SETFOCUS
|
Список получает фокус ввода
|
2.6.3. Сообщения для комбинированного списка
Для управления комбинированным списком используют набор сообщений, аналогичный сообщениям для списка и редактора текста. В следующей таблице перечислены коды некоторых сообщений:
Сообщение и параметры
|
Пояснение
|
CB_ADDSTRING, 0 и (LPARAM)lpszStr
|
Добавить строку IpszStr в список. Возвращает номер строки в списке или код ошибки
|
CB_DELETESTRING (WPARAM)nIndex и OL л
|
Удалить строку с номером nindex из списка. Возвращает количество оставшихся в списке строк или код ошибки
|
CB_DIR, (WPARAM)(UINT)uAttr, (LPARAM) lpszFileSpec;
|
Заполнить список именами файлов с атрибутом uAttr- и шаблона IpszFileSpec, и каталогов в текущем каталоге, и именами дисков. Возвращает номер последнего имени файла, добавленного в список, или код ошибки
|
CB_FINDSTRING, (WPARAM)nIndexStart (LPARAM)(LPCSTR)lpszStr
|
Начиная со строки с номером nIndexStart, искать строку с префиксом IpszStr. Возвращает номер найденной строки или код ошибки (если строки в списке нет)
|
CB_GETCOUNT, 0 и OL
|
Определить количество строк в списке. Возвращает количество строк в списке или код ошибки
|
CB_GETCURSEL, 0 и OL
|
Определить номер выделенной строки. Возвращает номер выделенной строки или код ошибки
|
СВ GETDROPPEDSTATE О и 0L,
|
Определить, находится список в видимом или невидимом состоянии. Возвращает TRUE, если список виден, FALSE - если нет
|
СВ_GETLBTEXT, (WPARAM)nIndex и (LPARAM)(mtFAR*)lpB
|
Копировать текст строки с номером nhidex в буфер 1рВ. Возвращает длину строки в байтах или код ошибки
|
СВ INSERTSTRING, (WPARAM)nIndex и (LPARAM)(int FAR *)lpB
|
Вставка строки 1рВ в список под номером nhidex. Возвращает номер позиции, в которую вставлена строка, или код ошибки
|
СВ_LIMITTEXT, (WPARAM)cCmax и OL
|
Определить сСтах как максимальна допустимое количество символов в окне редактирования. Возвращаемое значение не используется
|
СВ_RESETCONTENT, О и ОL
|
Удалить все строки из списка. Возвращаемое значение не используется
|
СВ_SELECTSTRING, (WPARAM)nIndexStart и (LPARAM)(int FAR *)lpB
|
Начиная со строки с номером nIndexStart, найти и выделить строку с префиксом 1рВ. Возвращает номер найденной строки или код ошибки
|
СВ_SETCURSEL, (WPARAM)nIndex и OL
|
Выделить строку с номером nhidex. Если nhidex равно -1, выделение всех строк будет отменено. При этом функция SendMessage вернет значение CBERR, что в данном случае не говорит об ошибке. Возвращает код ошибки (если значение nindex не равно -1)
|
СВ_SHOWDROPDOWN. (WPARAM)(BOOL)fExten ded и OL
|
Переключение списка в отображаемое или неотображаемое состояние. При fExtended=TRUE отображать, при FALSE - нет. Возвращаемое значение всегда не равно 0
|