Rapid-Q Documentation by William Yu (c)1999 Глава 8


8. Использование графических ресурсов (Using Image Resources)

Большинство программных языком под Windows поддерживает использование файлов ресурсов .RES (Resource) Файлы ресурсов это просто набор рисунков, а также строк и данных. В этой главе вы узнаете больше о списке рисунков (Image lists), как сохранять рисунки в исполняемом файле и как правильно использовать их в вашем приложении.

8.1 Поддерживаемые виды ресурсов (Supported RESOURCES)
Rapid-Q поддерживает только графические ресурсы, то есть Icons и Bitmaps Rapid-Q only "directly" supports image resources, ie. just Icons and Bitmaps. В чем разница между загрузкой рисунков во время выполнения программы (run-time) и загрузкой указателей на ресурсы (resource handles)? Во- первых когда вы объявляете указатель на ресурсы, рисунок автомтически встраивается в ваш exe файл. Например:
     $RESOURCE ICO_TEST AS "C:\ICONS\TEST.ICO"

     DIM Form AS QForm

     Form.ICOHandle = ICO_TEST
     'Form.Icon = "C:\ICONS\TEST.ICO"
Файл C:\ICONS\TEST.ICO встраивается в в exe-файл и его не надо добавлять в дистрибутив вашей программы. Rapid-Q не создает .RES файлы и он не дает доступа к ним другим пользователям. Большинство языков предоставляет возможность работы с .RES файлами, но вы не можете использовать их в Rapid-Q, вы можете только извлечь оттуда картинку и при помощи директивы $RESOURCE вставить ее в свое приложение. Вы также можете сделать следующее.
     Form.ICOHandle = ICO_TEST

     DIM Image AS QImage

     Image.Icon = Form.Icon
Image.Icon допускает строковую переменную, но если указана не строовая переменная он будет читать предыдущую иконку их кэша В этом случае мы загружаем Form.Icon в кэш и Image.Icon читается оттуда. Что получится при этом?
     Image.Icon = Form.Icon + Form2.Icon
Form2.Icon загрузится в кэш, так что Image.Icon будет копироваться в Form2.Icon. Однако заметьте что вы не можете использовать Icon Handles, например:
     Image.IcoHandle = Form.IcoHandle
Парсер будет пытаться найти указатель на ресурс (resource handle), но не сможет его найти.

8.2 Введение в список рисунков (Introduction to Image lists)
Вы можете посмотреть свойства и методы QImageList в приложении. Image list это массив иконок или битмапов (icons and/or bitmaps). Они пронумерованы от 0 до N. Image list хранит рисунки фиксированной ширины и высоты. Всякий раз когда вы меняете Width или Height вы в конечном итоге вы полностью очищаете массив. Это не значит, что вы не можете добавить 100x100 BMP файл если ширина image list равна 32. Это значит, что BMP размер будет изменен, хотите ли вы этого или нет.
    DIM ImageList AS QImageList
        ImageList.Width = 32
        ImageList.Height = 32
        ImageList.AddICOFile("app.ico")
        ImageList.AddBMPFile("app.bmp", 0)
Вы можете добавить icons или bitmaps в любом порядке. Как и раньше вы можете добавлять изображения из кэша, если не указано имя файла.
    ImageList.AddICOFile(Form.Icon)
    ImageList.AddICOFile(ImageList.GetICO(0))


8.3 Другие виды ресурсов (Other kinds of Resources)
Вы можете включать любые виды ресурсов в ваши приложения на Rapid-Q, но как можно использовать эти другие виды? Например , если я включу .WAV file как ресурс, как я смогу использовать его в моей PLAYWAV процедуре? Это несложно. Поскольку PLAYWAV может обрабатывать указатели на ресурсы (resource handles), вы можете просто передать его как параметр.
    $RESOURCE Bomb_WAV AS "BOMB.WAV"
    
    PlayWav(Bomb_WAV, 1)      '-- 1 = background play

    SLEEP 5                   '-- Wait until wav is finished
Для других видов ресусов вы можете извлечь ресурсы для их использования.
    $RESOURCE Whatever_TYPE AS "text.txt"
    
    ExtractResource(Resource(0), "text.txt")
После использования вы можете просто удалить этот файл. Извлекаемые ресурсы можно использовать во многих случаях,ример при установке программ. для дополнительной информации о EXTRACTRESOURCE, RESOURCE, и RESOURCECOUNT см. Appendix C - Другие зарезервированные ключевые слова (Other reserved keywords).


Prev Глава Содержание Next Глава