
- •Лабораторна робота №1 Загальні теоретичні відомості:
- •Питання для самоконтролю:
- •Лабораторна робота №2 Системний реєстр Windows
- •Огляд системного реєстру
- •Скарбниця імен
- •Призначений для користувача модуль
- •Системний блок
- •Загальний модуль
- •Ключі конфігурації
- •Конфігураційні файли win.Ini і system.Ini
- •Питання для самоконтролю:
- •Лабораторная работа №3
- •Основы программирования в операционной системе Windows
- •Вызов функций api
- •Структура окна
- •Принципы построения оконных приложений
- •Структура окна
- •Параметры dwExStyle:
- •Параметры dwStyle :
- •12. Функция ExitProcess :
- •17. Функция BeginPaint:
- •Сообщения, посылаемые списку
- •Вопросы для подготовки к сдаче лабораторной работы.
- •Лабораторная работа №4
- •Язык описания ресурсов
- •Пиктограммы
- •Курсоры
- •Акселераторы
- •Api – функции
- •Вопросы для подготовки к сдаче лабораторной работы.
- •Лабораторная работа №5
- •Типы многозадачности
- •Использование многопоточности в приложениях Delphi
- •Синхронизации потоков
- •Критические секции
- •Пример создания многопоточного приложения в Delphi:
- •Лабораторная работа №6 «Специальные объекты синхронизации»
- •Событие (event)
- •Мьютекс (mutex )
- •Семафор (semaphore)
- •Crytical Sections
Принципы построения оконных приложений
Свойства конкретного окна задаются при вызове функции CreateWindowопределением параметраStyle. Константы, определяющие свойства окна, содержатся в специальных файлах, которые подключаются при компиляции. Поскольку свойства фактически определяются значением того или иного бита в константе, комбинация свойств – это просто сумма битовых констант. В отличии от многих рекомендаций для разработчиков все константы здесь определяются непосредственно в программах.
Окно создается на основе зарегистрированного класса. Оно может содержать элементы управления – кнопки, окна редактирования, списки, полосы прокрутки и т.д. Все эти элементы могут создаваться как окна с предопределенными классами (для кнопок BUTTON, для окна редактирования EDIT,для счетчикаLISTBOXи т.д.).
Система общается с окном, а следовательно, и с самим приложением посредством посылки сообщений. Эти сообщения должны обрабатываться процедурой окна. Программирование под Windowsв значительной степени является программированием обработки таких сообщений. Сообщения генерируются системой также в случаях каких-либо визуальных событий, происходящих с окном или управляющими элементами в нем. К таким событиям относятся перемещение окна или изменение его размеров, нажатие кнопки, выбор элемента в списке, перемещение курсора мыши и т.п. Это понятно, программа должна как-то реагировать на подобные события.
Сообщение имеет код (будем обозначать его в программе VES) и два параметра (WPARAMиLPARAM).Для каждого кода сообщения придумано свое макроимя, хотя это всего лишь целое число. Например, сообщениеWM_CREATEприходит один раз, когда создается окно,WM_PAINTпосылается окну при его перерисовке, сообщениеWM_RBUTTONDOWNгенерируется, если щелкнуть правой кнопкой мыши при расположении курсора мыши в области окна и т.д. Параметры сообщения могут не иметь никакого смысла либо играть уточняющую роль. Например, сообщениеWM_COMMANDгенерируется системой, когда что-то происходит с управляющими элементами окна. В этом случае по значению параметров можно определить, какой это элемент и что с ним произошло (LPARAM– дескриптор элемента, старшее словоWPARAM– событие, младшее словоWPARAM – обычно идентификатор ресурса). Можно сказать, что сообщениеWM_COMMANDнесет сообщение от элемента окна.
Сообщение может генерироваться не только системой, но и самой программой. Например, можно послать сообщение-команду какому-либо элементу управления (добавить элемент в список, передать строку в окно редактирования и т.п.). Иногда посылка сообщений используется как прием программирования. Например, можно придумать свои сообщений так, чтобы при их посылке программа выполнила те или иные действия. Естественно, это сообщение должно «отлавливаться» либо в процедуре какого-нибудь окна, либо в цикле обработки сообщений. Такой подход очень удобен, поскольку позволяет фактически осуществлять циклические алгоритмы так, чтобы возможные изменения с окном во время исполнения такого цикла сразу проявлялись на экране.