- •Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция.
- •Файл определения модуля.
- •Структура windows – программы.
- •Структура программы в Windows:
- •Сообщения. Источники сообщений
- •Формирование сообщений, примеры. Очереди.
- •Сообщения. Цикл сообщений, основные компоненты.
- •Сообщения. Структура сообщений на примере wm_command
- •Средства обработки сообщений в приложении и windows.
- •Структура msg. Обработка сообщений.
- •Окна, классы и типы окон.
- •Регистрация класса окна, основные элементы класса.
- •Int cbClsExtra; // 3. Доп. Память для окон, созд-мых на базе данного класса
- •Int cbWndExtra; // 4. Доп. Память для создания окна (3, 4 – в байтах)
- •Линейки прокрутки, переключатели, окна пометки, окна списка.
- •1. Кнопки, переключатели (переключатели – кнопки с 3-мя состояниями (вкл, выкл и неактивен)
- •2. Полосы прокрутки.
- •3. Окна списка
- •Комбинированные списки, окна редактирования и статические текстовые объекты.
- •1. Комбинированные списки
- •2. Окна редактирования
- •3. Статический орган управления (статический текстовый объект)
- •Способы создания меню
- •Создание меню в файле ресурсов
- •С помощью функций в теле программы
- •Создание меню редактором ресурсов
- •Определение диалоговой панели, взаимодействие пользователя с панелью.
- •1. Создание шаблона.
- •2. Создание функции диалога.
- •3. Вызов одной из функций создания диалога
- •Диалоговые панели, модальные панели.
- •Немодальные панели. Отличие циклов сообщений.
- •Ресурсы. Файл ресурсов, текстовый, бинарный. Создание.
- •Файл определения модуля. Назначение, основные директивы (относящиеся к коду и данным).
- •Графический приборный интерфейс gdi. Состав, назначение.
- •Контекст, содержание контекста.
- •Общий контекст, родительский, личный, для класса окна, физический.
- •1. Общий контекст отображения.
- •2. Контекст отображения для класса окна
- •3. Личный контекст отображения
- •4. Родительский контекст отображения
- •5. Контекст физического устройства
- •Последовательность действий приложения при формировании рисунка
- •Преобразование логических координат в физические и наоборот, единицы измерений, масштабирование.
- •Назначение и состав структуры paintstruct. Сообщение wm_paint.
- •Int right; х-коор-та нижнего правого угла
- •Int bottom; y-коор-та
- •Дополнительные темы.
- •Аппаратная независимость
- •Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция
3. Окна списка
Предназначены для выбора элемента из некоторого определенного списка. С помощью класса "listbox" можно создавать одноколоночные и многоколоночные списки, имеющие вертикальную (для одноколоночных списков) и горизонтальную (для многоколоночных списков) полосу просмотра.
А) Создание:
hListBox = CreateWindow("listbox", NULL,WS_CHILD | WS_VISIBLE | LBS_STANDARD |
LBS_WANTKEYBOARDINPUT, 30,30,200,100, hwnd, (HMENU) ID_LIST, hInst, NULL);
2 – имя/заголовок (должен быть NULL)
8 – идентификатор родит окна, куда будет поступать сообщение WM_COMMAND
Б) Стили окон списка:
LBS_EXTENDEDSEL – Можно выделять несколько рядом расположенных строк
LBS_MULTICOLUMN – для мультиколоночного списка
LBS_MULTIPLESEL – выделять несколько любых строк
LBS_SORT – строки списка будут отсортированы и другие (LBS_NOINTEGRALHEIGHT, LBS_NOREDROW, LBS_OWNERDRAWFIXED)
Список посылает в родительское окно сообщение WM_COMMAND. wParam этого сообщения содержит идентификатор списка, Младшее слово параметра lParam содержит идентификатор окна списка, а старшее - код извещения.
LBN_DBLCLK – Двойной щелчок левой клавишей мыши по строке списка
LBN_KILLFOCUS – потерян фокус ввода
LBN_SELCHANGE – польз-ль выбрал другую строку.
В) Сообщения для списка:
Для управления списком приложение посылает ему сообщения, вызывая функцию SendMessage.
LB_ADDSTRING – добавление строки в список LB_DELETESTRING
LB_DIR – заполнение списка именами файлов и каталогов в текущем каталоге
LB_FINDSTRING – поиск строки в списке.
Комбинированные списки, окна редактирования и статические текстовые объекты.
1. Комбинированные списки
Этот орган является комбинацией списка и однострочного редактора текста. Например, выбор размера шрифта.
А) Создание:
hComboBox = CreateWindow("ComboBox", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL
|CBS_AUTOHSCROLL|CBS_SIMPLE,30,30,200,200,hwnd,(HMENU) ID_LIST, hInst, NULL);
2 – заголовок (должен быть NULL)
8 – идентификатор родительского окна, куда будет поступать сообщение WM_COMMAND
9 – идентификатор списка
Б) Стили:
CBS_DROPDOWN – список невидим, пока пользователь не щелкнет по пиктограмме.
CBS_DROPDOWNLIST – аналогично, но нет возможности редактирования
CBS_AUTOHSCROLL – автоматическая свертка по горизонтали
СBS_SIMPLE – всегда виден, под окном однострочного редактора.
В) Коды извещения
Список "combobox" посылает в родительское окно сообщение WM_COMMAND. Параметр wParam этого сообщения содержит идентификатор списка. Младшее слово параметра lParam содержит идентификатор окна списка, а старшее - код извещения.
CBN_CLOSEUP – список стал невидимым
CBN_DROPDOWN – стал видимым
CBN_KILLFOCUS (SETFOCUS) – теряет фокус ввода (приобрел)
CBN_DBLCLK – Двойной щелчок левой клавишей мыши по строке списка, имеющего стиль CBS_SIMPLE.
А так же CBN_EDITCHANGE, CBN_EDITUPDATE, CBN_SELENDOK (выбор строки в списке) CBN_SELCHANGE (изменил выбор)
Г) Сообщения для списка
Функция SendMessage, посылающая сообщения списку "combobox", возвращает значение, которое зависит от выполняемой функции или коды ошибок.
CB_ADDSTRING - Добавление строки в список.
CB_DELETESTRING – Удаление строки из списка.
CB_DIR Заполнение списка именами файлов и каталогов, расположенных в текущем каталоге, а также именами дисков.
