Библиотека knigago >> Компьютеры: Разработка ПО >> Программирование графики >> Графика DirectX в Delphi


"Хромая дама" Сони Пернелл - захватывающая и проницательная биография, которая открывает малоизвестную историю одной из самых выдающихся женщин-агентов Второй мировой войны. В этой хорошо продуманной книге Пернелл рисует яркий портрет Вирджинии Холл, американки, которая преодолела физические ограничения, чтобы стать одним из самых эффективных шпионов Союзников во Франции. Ее бесстрашие, находчивость и решимость служить своей стране - поистине вдохновляющие. В то время, когда женщины...

СЛУЧАЙНАЯ КНИГА

Михаил Краснов - Графика DirectX в Delphi

Графика DirectX в Delphi
Книга - Графика DirectX в Delphi.  Михаил Краснов  - прочитать полностью в библиотеке КнигаГо
Название:
Графика DirectX в Delphi
Михаил Краснов

Жанр:

Учебники и самоучители по компьютеру, Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Программирование графики, Pascal, Delphi, Lazarus и т.п.

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Графика DirectX в Delphi"

Аннотация к этой книге отсутствует.

Читаем онлайн "Графика DirectX в Delphi" (ознакомительный отрывок). [Страница - 3]

сведения, необходимые читателю для понимания механизмов функционирования DirectDraw и других частей DirectX.

Примеры к данной главе располагаются в каталоге \Examples\Chapter0l, для изучения они должны быть скопированы на диск, допускающий перезапись.


Библиотеки динамической компоновки

Ключевым понятием операционной системы Windows, позволяющим понять любую технологию, использующуюся в ней, является понятие библиотеки динамической компоновки (DLL, Dynamic Link Library). Любое полноценное приложение этой операционной системы (32-разрядное приложение, имеющее собственное окно) использует DLL-файлы. По мере необходимости приложение обращается к библиотекам, вызывая из них нужные функции. Например, выполнимый модуль приложения не содержит кода по отображению окна, вывода в окно и реакции на большинство событий. Перечисленные действия реализуются в системных DLL. В частности, использованием такой технологии удается экономить драгоценные ресурсы, один и тот же код не дублируется многократно, а размещается в памяти единожды.

К одной библиотеке, как правило, может обращаться одновременно несколько приложений. Библиотеку в такой схеме называют сервером, а обслуживаемое им приложение - клиентом. Сервером и клиентом в общем случае могут являться и библиотека, и приложение. В частности, это означает, что некоторая библиотека, в свою очередь, может "подгружать" функции из другой библиотеки.

Продемонстрируем работу операционной системы следующим примером. Создадим библиотеку, содержащую полезную функцию, выводящую на окне вызывающего клиента растровое изображение. Дальше приведем инструкцию ваших действий в среде Delphi. Готовый результат содержится в каталоге ExOl.

В главном меню выберите пункт File | New и в появившемся окне New Items щелкните на значке с подписью "DLL".

Чтобы выводимый растр не оказался легко доступным для посторонних глаз, скроем его, поместив в библиотеку. Для этого с помощью редактора ресурсов Image Editor (для вызова его выберите соответствующую команду меню Tools) создайте новый файл ресурсов с единственным ресурсом - нужным растром. Присвойте имя ресурсу - ВМР1.

Для подготовки этого примера было взято одно из растровых изображений, поставляемых в составе пакета DirectX SDK, скопированное из окна редактора Microsoft Paint через буфер обмена.

Закончив редактировать растр, res-файл запишите в каталог, предназначающийся для проекта библиотеки под именем DLLRes.res.

Код DLL-проекта приведите к следующему виду:


library Projectl; // Проект библиотеки uses

Windows, Graphics;

{$R DLLRes.res} // Подключение файла ресурсов

// Описание экспортируемой функции, размещаемой в DLL (export) и

// вызываемой стандартно (stdcall)

procedure DrawBMP (Handle : THandle); export; stdcall; var

wrkBitmap : TBitmap; wrkCanvas : TCanvas; begin

wrkBitmap := TBitmap.Create; wrkCanvas := TCanvas.Create; try

// Растр загружается из ресурсов, идентифицируется именем wrkBitmap.LoadFromResourceName (HInstance, 'BMP1'); wrkCanvas.Handle := Handle; wrkCanvas.Draw(0, 0, wrkBitmap); finally

wrkCanvas.Free; wrkBitmap.Free;

end;


end;


// Список экспортируемых функций // Функция у нас единственная exports

DrawBMP;

// Следующий блок соответствует инициализации библиотеки begin

end.


Не будет лишним привести некоторые пояснения. Аргументом функции должен являться идентификатор канвы вызываемой формы. У вспомогательного объекта процедуры, класса TCanvas, значение этого идентификатора устанавливается в передаваемое значение, и теперь все его методы будут работать на канве окна, вызывающего функцию приложения.

А сейчас создайте DLL, откомпилировав проект.


Откомпилируйте проект, но не запускайте его. Нельзя запустить DLL в понятии, привычном для обычного приложения.

В каталоге должен появиться файл Projectl.dll. Исследуйте библиотеку: поставьте курсор на ее значок, нажмите правую кнопку мыши и в появившемся контекстном меню выберите команду Быстрый просмотр.



Если данная команда отсутствует, вам необходимо установить соответствующий компонент, входящий в дистрибутив операционной системы.

В окне отобразится информация о содержимом библиотеки, разбитая по секциям, среди которых нас особо интересует секция экспортируемых функций (рис. 1.1).

Если с помощью утилиты быстрого просмотра вы взглянете на содержимое модуля обычного приложения, то не найдете там секции экспортируемых функций. Это принципиальное отличие библиотек динамической компоновки от обычных исполняемых файлов.



Некоторые библиотеки скрывают секцию экспортируемых функций от обычного просмотра, но она там обязательно присутствует, даже --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.