- •Содержание
- •Основные требования к оформлению и содержанию отчета о лабораторной работе
- •Лабораторная работа № 1 простейшее приложение на базе win32/64 api
- •Изучаемые вопросы
- •Постановка задачи
- •Теоретические сведения Простейшее Windows-приложение на базе Win32 api
- •Главное окно. Дочерние окна
- •Структура оконного класса: элементы и их назначение
- •Регистрация в Windows оконного класса
- •Создание экземпляров оконных классов
- •Отображение окон на экране
- •Управление положением и размерами окон
- •Установка фона окна
- •Прикрепление курсора к приложению. Создание курсора
- •Цикл обработки сообщений
- •Оконная функция. Назначение, параметры, обработка сообщений
- •Обновление оконной области на экране
- •Варианты заданий к лабораторной работе № 1
- •Лабораторная работа № 2 диалоговые окна
- •Изучаемые вопросы
- •Постановка задачи
- •Теоретические сведения Назначение и классификация диалоговых окон
- •Создание и отображение диалогового окна на экране
- •Шаблон, ресурсы диалогового окна
- •Заголовок шаблона
- •Определения элементов управления
- •Задание размеров диалогового окна
- •Управляющие элементы диалогового окна
- •Обработка сообщений от элементов управления диалогового окна
- •Сообщения работы с модальными и немодальными диалоговыми окнами
- •Лабораторная работа № 3 программирование внешних устройств
- •Изучаемые вопросы
- •Постановка задачи
- •Теоретические сведения Клавиатура
- •Драйвер клавиатуры Windows
- •Очередь аппаратных событий
- •Поля параметра lParam
- •Цикл получения сообщений
- •Коды ansi
- •Оконный объект
- •Оконная процедура умолчания
- •Двойной щелчок мыши
- •Использование таймера
- •Варианты заданий к лабораторной работе № 3
- •Лабораторная работа № 4 работа с файлами
- •Изучаемые вопросы
- •Постановка задачи
- •Теоретические сведения Символьные константы
- •Escape-последовательности
- •Правила именования файлов в Win32
- •Запись информации в файл и чтение информации из файла
- •Текстовые файлы
- •Бинарные файлы
- •Запись данных в файл
- •Чтение данных из двоичного файла в шестнадцатеричной кодировке
- •Дамп содержимого файла
- •Работа с каталогами и манипулирование файлами
- •Поиск файлов
- •Размер файла
- •Создание и удаление каталогов
- •Лабораторная работа № 5 файловая система fat
- •Изучаемые вопросы
- •Последовательность выполнения работы
- •Теоретические и справочные сведения
- •Лабораторная работа № 6 файловая система ntfs
- •Изучаемые вопросы
- •Постановка задачи
- •Теоретические сведения Структура Boot
- •Метафайлы
- •Атрибуты файла
- •Записи главной таблицы файлов
- •Лабораторная работа № 7 процессы (часть 1)
- •Изучаемые вопросы
- •Постановка задачи
- •Теоретические сведения Структуры startupinfo, process_information
- •Создание процесса
- •Класс приоритета процесса
- •Наследование дочерними процессами ресурсов родительского процесса
- •Функции Win32 для управления процессами
- •Окончание процесса
- •Лабораторная работа № 8 процессы (Часть 2)
- •Изучаемые вопросы
- •Постановка задачи
- •Теоретические сведения Переменные окружения процесса
- •Передача информации между процессами через переменные окружения
- •Диаграмма состояния процесса
- •Список процессов
- •Идентификатор процесса
- •Кто родитель процесса
- •Текущая рабочая директория процесса
- •Время выполнения процесса
- •Наследование дочерними процессами среды родительского процесса
- •Литература
Определения элементов управления
Нижеследующий шаблон заголовка – это один или большее количество определений элементов управления, которые описывают элементы управления диалогового окна. И в стандартном и в расширенном шаблоне заголовок блока диалога имеет элемент, который указывает число элементов управления, определяемых в шаблоне. В стандартном шаблоне каждое определение элемента управления состоит из структуры DLGITEMTEMPLATE, сопровождаемой дополнительными массивами переменной длины. В расширенном шаблоне определения элемента управления используют формат DLGITEMTEMPLATEEX.
И в стандартном и в расширенном шаблоне определение элемента управления включает в себя следующую информацию:
1) размещение и габариты элемента управления;
2) стили окна и элемента управления для средств управления;
3) идентификатор элемента управления;
4) класс окна элемента управления. Это могут быть или порядковые значения предопределенного класса системы, или строка Unicode с нуль-терминатором на конце, которая определяет имя зарегистрированного класса окна;
5) строка Unicode с нуль-терминатором на конце, которая определяет начальный текст элемента управления, или перечисление значений, которые идентифицируют ресурс, тип пиктограммы в исполняемом файле;
6) необязательный переменной длины блок данных создания. Когда система создает элемент управления, она передает указатель на эти данные в параметре lParam сообщения WM_CREATE, которое передается в элемент управления.
В расширенном шаблоне определение элемента управления также выполняет идентификатор справочного контекста, который идентифицирует элемент управления, когда система посылает сообщение WM_HELP.
Задание размеров диалогового окна
Шаблон каждого диалогового окна содержит размеры, которые устанавливают позицию, ширину и высоту блока диалога и элементов управления, которые он содержит. Это аппаратно-независимые размеры, так что прикладная программа может использовать единственный шаблон для создания одного и того же диалогового окна для всех типов устройств изображения. Это гарантирует, что блок диалога будет иметь те же самые пропорции и внешний вид на всех экранах, несмотря на различное разрешение и отношение сторон между экранами.
Размеры диалогового окна устанавливаются в базовых единицах диалога. Одна единица по горизонтали эквивалентна одной четверти средней ширины символа системного шрифта. Одна единица по вертикали эквивалентна одной восьмой средней высоты символа системного шрифта. Прикладная программа может извлечь информацию о числе пикселей на базовую единицу измерения для текущего изображения при помощи функции GetDialogBaseUnits. Приложение может преобразовать размеры из базовых единиц диалогового окна в пиксели, используя функцию MapDialogRect.
Шаблон должен устанавливать начальные координаты верхнего левого угла диалогового окна. Обычно это координаты относительно верхнего левого угла рабочей области окна владельца. Когда шаблон устанавливает стиль DS_ABSALIGN или у диалогового окна нет владельца, позиция определяется относительно верхнего левого угла экрана. Windows устанавливает эту первоначальную позицию, когда создает диалоговое окно, но дает возможность прикладной программе регулировать позицию блока диалога перед его показом. Например, приложение может извлечь габариты окна владельца, вычислить новую позицию, в которую помещает диалоговое окно в окне владельца, а затем установить позицию, используя функцию SetWindowPos.
П р и м е р:
HWND hwndOwner;
RECT rc, rcDlg, rcOwner;
case WM_INITDIALOG:
if ((hwndOwner = GetParent(hDlg)) == NULL)
{
hwndOwner = GetDesktopWindow();
}
GetWindowRect(hwndOwner, &rcOwner);
GetWindowRect(hDlg, &rcDlg);
CopyRect(&rc, &rcOwner);
OffsetRect(&rcDlg, -rcDlg.left, -rcDlg.top);
OffsetRect(&rc, -rc.left, -rc.top);
OffsetRect(&rc, -rcDlg.right, -rcDlg.bottom);
SetWindowPos(hDlg,
HWND_TOP,
rcOwner.left + (rc.right / 2),
rcOwner.top + (rc.bottom / 2),
0, 0, // ignores size arguments
SWP_NOSIZE);
return TRUE;
