Немного об использовании ресурсов (часть первая)

Использование ресурсов при создании диалогов в наше время сильно сократилось, поскольку появились такие среды как Microsoft Visual Studio, RAD Studio, QT и пр. Поэтому в данной статье я не буду охватывать данную возможность. Но есть вещи, создаваемые с помощью ресурсов , которые до сих пор используются часто. Это возможность установить иконку для EXE файла, строки, манифест, меню, а так же упаковка иконок, изображений, звуков в секцию ресурсов. Ресурсы используются только под управлением системы Windows. В FreeBasic обрабатываются сторонней утилитой GoRC Resource Compiler , которая все же идет в поставке с компилятором. Данная утилита обрабатывает текстовый файл с расширением RC и преобразует его в двоичный RES файл. RES файл как и другие объектные файлы линкуются на этапе создания EXE файла.

Для установки своей иконки для EXE файла нужно создать RC файл с содержанием:

100 ICON "Иконка.ico"

В данном случае 100 - идентификатор, может быть другим. Используется для возможного дальнейшего доступа к ресурсу в программе. ICON - тип ресурса. И далее идет имя иконки с полным путем к нему. В данном случае иконка расположена в одной папке с RC файлом.

Сохранить файл RC с любым именем.

И скомпилировать примерно так:

fbc -s gui 1.rc 2.bas


В итоге EXE файл теперь имеет вашу собственную иконку.

------------

Манифесты могут использоваться для улучшенного вида ваших контролов, для запуска файлов с правами администратора и может еще чего...

Так для создания улучшенного вида контролов нужно создать файл с расширением XML такого вида:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="*"
    name="Company.Product.Name"
    type="win32"
/>
<description></description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>


А для запуска EXE файлов с привилегиями администратора с таким содержанием:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<description>Admin program</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
     <requestedPrivileges>
        <requestedExecutionLevel
           level="requireAdministrator"
           uiAccess="false"/>
     </requestedPrivileges>
  </security>
</trustInfo>
</assembly>


В файле RC пишем примерно следующее:

1 24 "xpmanifest.xml"


И компилируем так же как описано выше.