Внешние ресурсы для GUI-программ
Когда вы разрабатываете приложение GUI, исходный код состоит не только из файлов PRG и CH, но также из так называемых Внешних Ресурсов, которые содержат графические данные. Точечные рисунки и иконки, например, являются внешними ресурсами, которые выводятся во время работы вашей программы (файла EXE).
Для обеспечения доступности внешних ресурсов они связываются с исполняемым файлом. Это выполняется компоновщиком Alaska. Именно он привязывает двоичные внешние файлы к файлу EXE.
Создание файлов внешних ресурсов, однако, задача утилиты Alaska Resource Compiler (ARC.EXE), и как раз это мы сейчас рассмотрим; на что она способна и зачем все это нужно. Прежде чем мы начнем, вы должны получить представление о многих исходных файлах, которые поставляются с Xbase++ и могут быть использованы в ваших приложениях. Поэтому откройте папки Apps и ImgView и запустите программу IMGVIEW.EXE. Это программа Xbase++ для показа точечных рисунков (если вы еще не закрыли папку Basics, то не перепутайте папку Basics->App с папкой Apps)
В левой части окошка вы увидите структуру разделов на диске. Откройте папку XppW32, а затем Resource. После этого появится список названий рисунков (внешних ресурсов), которые вы можете использовать в своих программах. Можете посмотреть, что доступно, или же просто поработать с программой.
Выберите из списка файл TILE12.BMP и нажмите кнопку Normal. Мы будем использовать этот файл как подложку для окна диалога, которое вы создали в FormDesigner.
Прервите выполнение программы IMGVIEW.EXE и загрузите файл TEST.PRG в ваш редактор. Вставьте одну строчку кода:
oDlg:visible := .F.
oDlg:drawingArea:bitmap := 100 // <— вставьте эту строчку
oDlg:create()
Новая строчка должна стоять перед строчкой oDlg:create(). Сохраните файл TEST.PRG, создайте новый файл TEST.ARC в вашем редакторе и напечатайте эту строчку:
BITMAP 100 = "tile12.bmp"
Обратите внимание на то, что BITMAP нужно написать заглавными буквами. Сохраните файл TEST.ARC и переключитесь в окно терминала. Теперь внешние ресурсы для вашей тестовой программы определены в файле TEST.ARC. Компилятор ресурсов создает из них файл внешних ресурсов. Чтобы создать тестовую программу, наберите следующие команды в сеансе DOS:
[C:\XPPFIRST]xpp test.prg
[C:\XPPFIRST]arc test.arc
[C:\XPPFIRST]alink test.obj test.res /PM:PM
Следите за сообщениями при выполнении этих программ. Если не было сообщения об ошибке, то вы можете запустить TEST.EXE. Точечный рисунок несколько раз прорисовывается до тех пор, пока не заполняется весь задний фон окна. Однако есть одна деталь, которая портит всю красоту: текст слева от полей ввода окружен серыми прямоугольниками. Это цвет заднего фона для статичного текста. Вы можете переключить этот цвет на “прозрачный”, поменяв одну строчку вашего кода:
Было: drawingArea:setColorBG( GRA_CLR_PALEGRAY )
Новаястрока: drawingArea:setColorBG( XBPSYSCLR_TRANSPARENT )
Создайте программу заново, скомпилировав файл PRG и запустив компоновщик (вам не надо снова создавать файл RES, так как файл ARC не изменился). Запустите программу. Теперь текст появился без цвета заднего фона.
Чему я научился?
Я использовал Alaska Resource Compiler ARC.EXE, и я теперь знаю, как объявлять внешние ресурсы в файле ARC. Я знаю, что компилятор ресурсов создает файл RES, который с помощью компоновщика можно связать с файлом OBJ.
Внимание: Причина, по которой ARC.EXE нашел файл TILE12.BMP – это переменная среды XPPRESOURCE. Она указывает на директорию, где ARC.EXE ищет исходные ресурсы.
-