Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634928)
Контекстум
Руконтекст антиплагиат система

Интерфейс API WIN32 на примерах (110,00 руб.)

0   0
Первый авторРудалев Валерий Геннадьевич
АвторыЩеглаков Дмитрий Александрович
ИздательствоИздательско-полиграфический центр Воронежского государственного университета
Страниц32
ID230238
АннотацияПособие подготовлено на кафедре технической кибернетики и автоматического регулирования.
Кому рекомендованоРекомендуется для студентов 3 курса дневного отделения факультета прикладной математики, информатики и механики Воронежского государственного университета.
Рудалев, В.Г. Интерфейс API WIN32 на примерах / Д.А. Щеглаков; В.Г. Рудалев .— Воронеж : Издательско-полиграфический центр Воронежского государственного университета, 2010 .— 32 с. — 32 с. — URL: https://rucont.ru/efd/230238 (дата обращения: 01.05.2024)

Предпросмотр (выдержки из произведения)

Д.А. Щеглаков ИНТЕРФЕЙС API WIN32 НА ПРИМЕРАХ Методическое пособие для вузов Издательско-полиграфический центр Воронежского государственного университета 2010 Утверждено методическим советом факультета прикладной математики, информатики и механики 21 декабря 2009 г. протокол № 4 Рецензент канд. физ.-мат. наук, доцент кафедры математического обеспечения ЭВМ О.Д. <...> 3 − Graphics Device Interface (GDI, интерфейс графических устройств) – функции и структуры для графического вывода на дисплеи, принтеры и другие графические устройства. <...> При создании приложений с использованием библиотек визуальных компонентов (например, VCL в Delphi) от программиста скрыто использование функций прикладных интерфейсов программирования. <...> Дело в том, что соответствующие классы компонентов VCL инкапсулируют основные функции Win32 API, что значительно ускоряет разработку Windowsприложений. <...> Дескриптор в API Win32 представляет собой длинное (32-разрядное) целое число, используемое для обращения к сопоставленному объекту. <...> Одному адресу памяти иногда могут соответствовать несколько дескрипторов, но один дескриптор всегда соответствует только одному объекту. <...> При первом обращении к несуществующему объекту ОС создает объект и возвращает процессу его дескриптор. <...> Если на объект больше не указывает ни один дескриптор, ОС удаляет объект из памяти. <...> В отличие от объектов визуальной библиотеки классов Delphi VCL, где загруженный объект связан с методами и свойствами своего класса, и наоборот, методы и свойства класса неявно ссылаются на объект, для функций Win32 API такой связи не предусмотрено. <...> Дескрипторам в Delphi соответствует набор типов, многие из которых эквивалентны друг другу. <...> Например, объявления переменных var h1, h1: THandle; и var h1:HWnd; h2:HFont эквивалентны. <...> Тем не менее, второе объявление более информативно и указывает на то, что переменная h1 содержит дескриптор оконного элемента, а h2 – элемента Font, используемого для установки параметров шрифта. <...> Так как ОС Windows написана на языке <...>
Интерфейс_API_WIN32_на_примерах.pdf
Стр.1
Стр.3
Стр.6
Стр.7
Стр.8
Интерфейс_API_WIN32_на_примерах.pdf
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» В.Г. Рудалев, Д.А. Щеглаков ИНТЕРФЕЙС API WIN32 НА ПРИМЕРАХ Методическое пособие для вузов Издательско-полиграфический центр Воронежского государственного университета 2010
Стр.1
Содержание ВВЕДЕНИЕ.............................................................................................................................. 3 1. ЭЛЕМЕНТЫ АРХИТЕКТУРЫ WIN32 ......................................................................... 4 1.1. Дескрипторы.................................................................................................................. 4 1.2. Сообщения и оконная функция ................................................................................... 6 1.3. Структура Windows-приложения. ............................................................................... 7 1.4. Создание элементов управления ............................................................................... 11 1.5. Функции обратного вызова (CallBack) ..................................................................... 15 1.6. Интерфейс графических устройств GDI................................................................... 17 2. ПРИМЕРЫ ПРОГРАММИРОВАНИЯ........................................................................ 20 2.1. Непрямоугольные, прозрачные, не видные в системе окна.................................... 21 2.2. Подключение мультимедийных ресурсов ................................................................ 23 2.3. Расширенная работа со шрифтами............................................................................ 27 2.4. Смена разрешения видеокарты.................................................................................. 29 2.5. Смена обоев рабочего стола....................................................................................... 30 ЛИТЕРАТУРА...................................................................................................................... 31 Введение Windows API (Application Programming Interfaces) представляет собой набор базовых функций, структур, сообщений, макросов и интерфейсов программирования приложений для операционных систем семейств Windows и Windows NT. Все 32-разрядные Windows-платформы обладают общим набором API, получившим название Win32 API. Работа через Windows API — это наиболее «близкий к системе» способ взаимодействия с ней прикладных программ. По типу предоставляемых возможностей выделяются несколько групп наборов Windows API. Среди них: − Window Management (управление окнами). Средства для создания пользовательского интерфейса и управления им. − Window Controls (элементы управления). Предназначены для создания общих элементов пользовательского интерфейса. Их применение делает единообразным интерфейсы графической оболочки и остальных приложений, а также сокращает время разработки. − Shell Features (функции оболочки). Предназначены для доступа к системным устройствам и ресурсам – дисководам, принтерам, файлам, сетевым ресурсам и т.д. 3
Стр.3
1.2. Сообщения и оконная функция Взаимодействие оконного приложения с пользователем осуществляется посредством механизма обработки сообщений. Этот механизм определяет реакцию приложения на то или иное действие пользователя или изменение среды в операционной системе. В процессе работы приложение получает большое количество сообщений от операционной системы. Их обработка происходит в одной конкретной процедуре (а точнее функции), называемой оконной. Такая схема функционирования во многом напоминает реакцию на события компонентов VCL. Отличие заключается в том, что у компонентов VCL для обработки каждого события назначается своя процедура-обработчик, в то время как оконная процедура предназначена для обработки всех сообщений. Для работы с сообщениями в Delphi предусмотрены записи TMsg и TMessage TMSG = record hwnd: HWND; //дескриптор окна, принимающего сообщение message: UINT; //идентификатор сообщения wParam: WPARAM; //параметры, содержимое которых lParam: LPARAM; //меняется в зависимости от типа сообщения time: DWORD; //время отправки сообщения pt: TPoint; //позиция курсора на экране end; TMsg – «родная» структура для функций Windows API. В Delphi для хранения сообщений предусмотрена структура TMessage, содержащая часть значений из соответствующей структуры TMsg. В структуре TMessage меньше записей, чем в TMsg. Это связано с тем, что обработку остальных параметров сообщения Delphi берет на себя. TMessage = record Msg: Cardinal; //идентификатор сообщения case Integer of 0: ( WParam: Longint;//параметры, содержимое которых LParam: Longint;//меняется в зависимости от типа //сообщения Result: Longint);// результат выполнения 1: ( WParamLo: Word;// 16 – битные части соответствующих WParamHi: Word;// параметров wParam и lParam ( младLParamLo: Word;// шее и старшее слово) LParamHi: Word; ResultLo: Word; ResultHi: Word); End; End; 6
Стр.6
Как следует из объявлений, значения параметров WParam и LParam зависят от вида (типа) сообщения. Тип сообщения соответствует событию, о котором информируется приложение (окно). Чтобы определить тип, используется параметр message. Через этот параметр передается константаидентификатор, по значению которой оконная функция определяет тип сообщения (см. табл. 2). Таблица 2 Константа WM_ACTIVATE WM_CHAR WM_CLOSE WM_KEYDOWN WM_KEYUP WM_MOUSEMOVE WM_PAINT WM_COMMAND WM_SETFONT WM_CLOSE WM_DESTROY* Значение $0006 $0102 $0010 $0100 $0101 WM_LBUTTONDOWN $0201 $0200 $000F $0111 $0030 $0010 $0002 Тип сообщения Активация или деактивация окна Клавиша клавиатуры нажата и отпущена Закрытие окна Нажата клавиша клавиатуры Отпущена клавиша клавиатуры Нажата левая клавиша мыши Перемещение указателя мыши Перерисовка клиентской области окна Выбор элемента меню либо от дочеpнего оконного элемента должно быть получено сообщение Изменение шрифта Закрытие окна Уничтожение окна В таблице приводятся лишь некоторые константы-идентификаторы сообщений. Объявления всех таких констант находятся в модуле messages.pas. 1.3. Структура Windows-приложения Рассмотрим пример создания простейшего однооконного приложения с использованием Win32 API. В среде Delphi создадим новый проект (File→New→Application). Затем удалим из него все модули и формы: View→Project Manager, воспользовавшись пунктом Remove (рис. 1). Открыв файл проекта (Project→View Source), отредактируем текст программы. * После передачи приложению сообщения WM_DESTROY, его оконной функцией вызывается функция DestroyWindow, которая, в свою очередь, передает окнам приложения сообщение WM_CLOSE. 7
Стр.7
Рис. 1 program Project1; uses Windows, Messages, SysUtils; var hWndMain:HWND;// дескриптор окна приложения WC:TWndClass;//структура для хранения параметров класса окна msg:TMsg;// сообщение Instance:HWnd;// дескриптор приложения // оконная процедура: Function WindowProc(Window: HWND; AMessage:Cardinal; wParam, lParam: Longint): Longint; stdcall; begin case AMessage of WM_DESTROY: begin PostQuitMessage( 0 ); Result := 0; Exit; end; else Result := DefWindowProc(Window ,AMessage, wParam, lParam); end; end; // Блок инициализации программы begin instance:=GetModuleHandle(nil); with WC do begin 8
Стр.8