Вход/Регистрация
Excel. Трюки и эффекты
вернуться

Гладкий Алексей Анатольевич

Шрифт:

В листинге 4.37 для извлечения значков из файла используется очередная полезная функция модуля ShellApi – Extract IconEx. Прототип функции таков:

...

function ExtractIconEx(lpszFile: PChar; nIconIndex: Integer;

var phiconLarge, phiconSmall: HICON;

nIcons: UINT): UINT;

Функция ExtractlconEx принимает следующие параметры:

• lpszFile – путь файла, из которого извлекаются значки;

• nIconlndex – номер первого извлекаемого значка; нумерация начинается с нуля (если номер равен -1 и параметры piconLarge и piconSmall нулевые, то функция возвращает количество значков в файле);

• piconLarge, piconSmall – ссылки на переменные типа HI CON (либо на первые элементы массива array. of HICON) для помещения в них дескрипторов больших и малых значков соответственно;

• nIcons – количество извлекаемых значков (по сути, может быть количество элементов в передаваемых в функцию массивах: лишние элементы не будут заполнены).

Функция возвращает количество значков, извлеченных из файла, или количество значков в файле при соответствующем значении параметра nlconlndex.

В листинге 4.36 используется не совсем оптимальный способ извлечения значков из файла – по одному. Однако он подойдет для большинства случаев. Другой (но не единственный) вариант – использование массива. Тогда функцииЕх^асИсопЕх передаются первые элементы массивов для дескрипторов значков (функции нужен адрес начала массива), а в качестве последнего параметра – количество элементов в массиве. Таким образом, если количество значков в файле превзойдет количество элементов в массиве, то вызов функции ExtractlconEx можно будет повторить, передав в качестве параметра nlconlndex значение, возвращенное функцией ExtractlconEx, умноженное на номер вызова функции (начиная с нуля).

Можно также использовать динамический массив, предварительно установив его размер, вызвав функцию ExtractlconEx с параметром nlconlndex, равным -1. Установить значения параметров piconLarge, piconSmall в ноль (не меняя объявления функции) можно, объявив указатель на HICON (AHICON), присвоив ему значение nil и передав его в качестве упомянутых параметров в функцию.

На рис. 4.11 приводится внешний вид формы приложения после извлечения значков из файла Explorer. ехе.

Обработчик нажатия кнопки Загрузить значки представленной н а рис. 4.11 формы приводится в листинге 4.38.

Рис. 4.11. Пример извлеченных из ЕХЕ-файла значков

...

Листинг 4.38. Составление списков значков и их отображение

procedure TForm1.cmbLoadIconClick(Sender: TObject);

var

i: Integer;

item: TListItem;

begin

lvwIconsLg.Clear;

lvwIconsSm.Clear;

//Загрузка значков в ImageList

ImageListLg.Clear;

ImageListSm.Clear;

LoadIcons(txtFile.Text, ImageListLg, ImageListSm);

//Создание элементов в ListView с большими и малыми значками

for i := 0 to ImageListLg.Count – 1 do

begin

item := lvwIconsLg.Items.Add;

item.Caption := \'Icon\' + IntToStr(i+1);

item.ImageIndex := i;

item := lvwIconsSm.Items.Add;

item.Caption := \'Icon\' + IntToStr(i+1);

item.ImageIndex := i;

end;

end;

Подразумевается, что имена элементов управления ListView: для отображения больших значков – lvwIconLg и для отображения малых lvwIconSm. На форме также расположены два элемента управления ImageList: ImageListLg для хранения больших и ImageListSm для хранения малых значков.

С помощью окна Object Inspector список ImageListLg назначен в качестве источника больших изображений (свойство Largelmages) для lvwIconLg. Соответственно, список ImageListSm назначен в качестве источника малых изображений (свойство Smalllmages) для lvwIconSm.

Глава 5 Мультимедиа

• Воспроизведение звука с помощью системного динамика

• Использование компонента MediaPlayer

• Компонент Animate

• Разработка звукового проигрывателя

• Видеопроигрыватель

Использование мультимедийных технологий позволяет повысить качество программ и придает им профессиональный вид, более привлекательный для пользователя. Среди разнообразных применений мультимедиа наиболее интересны аудио– и видеовозможности компьютера. Использование звуков и видео в программах позволяет иным образом взаимодействовать с пользователем: озвучивать его действия, информировать о некоторых событиях, просматривать видеоролики и т. п.

В рамках предложенной главы будут рассмотрены основные возможности мультимедийных средств и компонентов среды Delphi. Будут описаны компоненты Animate и MediaPLayer, использование API-функций для генерации звука системным динамиком и для воспроизведения звука из ресурсных файлов.

В отличие от языков Turbo Pascal и Borland Pascal, Delphi не содержит процедур типа Sound и NoSound, предназначенных для работы со звуком. Для использования мультимедийных возможностей компьютера в Delphi служат специальные компоненты Animate и MediaPLayer.

Компонент MediaPLayer является основным элементом воспроизведения аудио– и видеофайлов. Многофункциональный элемент MediaPLayer обладает рядом важных характеристик (свойств) и обеспечивает управление мультимедийными устройствами.

Для создания и воспроизведения простейшей анимации предназначен компонент Animate. Он позволяет воспроизводить файлы в формате AVI (Audio-Video Interleaved – Аудио– и видеосмесь).

5.1. Воспроизведение звука с помощью системного динамика

Звуковое сопровождение является важной частью большинства современных мультимедийных приложений. В простейших случаях генерации звукового сигнала удобно использовать процедуру Веер модуля SysUtils. В этом случае нет необходимости использовать вышеупомянутые мультимедийные компоненты языка, а звук создается встроенным системным динамиком. Процедура Веер осуществляет вызов одноименной API-функции, поэтому ее использование не составит большого труда (листинг 5.1).

  • Читать дальше
  • 1
  • ...
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: