- •Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция.
- •Файл определения модуля.
- •Структура windows – программы.
- •Структура программы в Windows:
- •Сообщения. Источники сообщений
- •Формирование сообщений, примеры. Очереди.
- •Сообщения. Цикл сообщений, основные компоненты.
- •Сообщения. Структура сообщений на примере wm_command
- •Структура msg. Обработка сообщений.
- •Средства обработки сообщений в приложении и windows.
- •Окна, классы и типы окон.
- •Регистрация класса окна, основные элементы класса.
- •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), компиляция
2. Окна редактирования
Редактор используется для ввода, редактирования текста и текстовых файлов + может использоваться выделение и работа с буфером.
А) Создание (парметры аналогично комбобоксу):
hwndEdit = CreateWindow("edit",NULL, WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,
30, 30, 300, 30, hwnd, (HMENU) ID_EDIT, hInst, NULL);
Б) Стили:
ES_MULTILINE – многострочный редактор текста
ES_READONLY – орган управления только для чтения
ES_LOWERCASE (UPPER) – преобразование к строчным (заглавным) символам.
ES_AUTOV(H)SCROLL – автоматическая свертка по вертикали(горизонтали)
ES_CENTER/RIGHT/LEFT –выравнивание текста
ES_PASSWORS – отображение * (для пароля).
В) Коды извещения
Текстовый редактор посылает в родительское окно сообщение WM_COMMAND с параметром wParam, равным идентификатору редактора. Младшее слово параметра lParam содержит идентификатор окна, полученный от функции CreateWindow при создании редактора. Старшее слово параметра lParam содержит код извещения.
EN_CHANGE – изменилось содержимое текста в окне редактирования
EN_H(V)SCROLL – выполнена свертка текста по горизонтали (вертикали)
EN_KILLFOCUS (SETFOCUS)– потерян фокус ввода, получен фокус ввода.
Г) Сообщения (С помощью функции SendMessage) можно посылать различные сообщения редактору:
Пример: WORD nState; nState = (WORD) SendMessage(hEdit, EM_CANUNDO, 0, 0L);
EM_CANUNDO – проверка поддержки отмены последнего действия
3. Статический орган управления (статический текстовый объект)
Это окно, создаваемое на базе предопределенного класса "static". Строго говоря, статический орган управления нельзя использовать для управления работой приложения, так как он не воспринимает щелчки мыши и не способен обрабатывать сообщения от клавиатуры. Статический орган управления не посылает родительскому окну сообщение WM_COMMAND.
Когда курсор мыши перемещается над статическим органом управления, Windows посылает функции окна этого органа сообщение WM_NCHITTEST. В ответ на это сообщение статический орган возвращает Windows значение HTTRANSPARENT. В результате Windows посылает сообщение WM_NCHITTEST родительскому окну, лежащему под органом управления.
Используется для оформления внешнего вида диалоговых панелей или окон приложения, для отображения пиктограмм.
А) Создание
HWND hStatic = CreateWindow ("static", NULL, WS_CHILD|WS_VISIBLE| SS_BLACKFRAME, 20, 40, 100, 50, hWnd, (HMENU)-1, hInstance, NULL);
2 – текст внутри статического органа; 8 – идентификатор родительского окна
9 – так как статический орган управления не посылает сообщения родительскому окну, можно указать любое число – идентификатор статического органа
Б) Стили:
SS_BLACKFRAME, SS_GRAYFRAME и SS_WHITEFRAME – прямоугольные рамки, внутри не закрашены
SS_BLACKRECT, SS_GRAYRECT и SS_WHITERECT – закрашенные прямоугольники.
SS_LEFT, SS_RIGHT, SS_CENTER, SS_LEFTNOWORDWRAP, SS_SIMPLE – для текста.
4 – обрезает не поместившийся текст и заменяет ТАВ на пробелы
5 – то же, но без замены.
Способы создания меню
Меню – важный элемент пользовательского интерфейса Windows. Существует несколько типов меню: 1) Меню приложения; 2) Временное меню; 3) Многоуровневое меню; 4) Плавающее меню.
Включение меню может быть произведено несколькими (тремя) методами:
С помощью текстового редактора (простой способ)
С помощью графического редактора
Непосредственно в оперативной памяти
Рассмотрим наиболее часто используемые способы создания меню.