Привіт усім. Сьогодні ми розглянемо методи вбудовування іконок у виконуваний файл і використання красивих стилів елементів вікна за допомогою Manifest-файла в ОС Віндовс. Нам знадобляться три файли: файл ресурсу, який має розширення “.rc”, manifest-файл з однойменним розширенням і іконка з розширенням “.ico”, яка буде відображатися на нашому виконуваному файлі в переглядачі файлів теки. Отже файл ресурсу, це звичайний текстовий файл. Його вміст може бути наступним:
1 VERSIONINFO
FILEVERSION     1,0,0,0
PRODUCTVERSION  1,0,0,0
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "080904E4"
    BEGIN
      VALUE "CompanyName", "www.kytok.org.ua"
      VALUE "FileDescription", "window resource demo"
      VALUE "FileVersion", "1.0"
      VALUE "InternalName", "window resource demo"
      VALUE "LegalCopyright", "www.kytok.org.ua"
      VALUE "OriginalFilename", "window.exe"
      VALUE "ProductName", "window resource demo"
      VALUE "ProductVersion", "1.0"
    END
  END

  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x809, 1252
  END
  
END

1 ICON "window.ico"

1 24 "window.manifest"
Усі значення необхідно замінити на власні, особливо два останніх значення в подвійних лапках - “window.ico” і “window.manifest”. Ви повинні замінити на назви ваших файлів іконки і manifest-файлу, інакше нічого не вийде. Також слід не змінювати цифри зазначені перед іменами даних файлів. Наступний файл, який нам знадобиться — це manifest-файл:
<?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="window resource demo" type="win32" />
    <description>window resource demo</description>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
        </dependentAssembly>
    </dependency>
</assembly>
Без даного файлу усі Ваші елементи вікна будуть мати некрасивий вигляд. У ньому також слід замінити деякі значення на власні. І також нам знадобиться іконка: window Для компілювання усіх цих файлів, Я буду використовувати спеціальний файл, який називається “Makefile”, оскільки кількість команд для виконання збільшилась, і щоб пришвидшити побудову програми, їх доцільно автоматизувати.
window: window.cxx window.rc window.manifest
	windres window.rc -O coff -o window.res
	g++ -c window.cxx -o window.obj -D UNICODE -D _UNICODE
	g++ -mwindows window.obj window.res -o window.exe -luuid -lComctl32 -lodbc32 -lComdlg32 -lgdi32

clean:
	rm *.exe
	rm *.obj
	rm *.res
Ви можете їх вводити вручну в тій послідовності, в якій вони є в “Makefile”. Для компілювання файлів за допомогою MinGW порту компілятора GCC, Ви можете скористатися програмою “make”. Для ти, хто компілює програми за допомогою Windows SDK (безкоштовно завантажити на сайті Майкрософт) можна скористатися наступним вмістом файлу “Makefile” (і програмою “nmake”):
window: window.cxx window.rc window.manifest window.ico
	rc window.rc 
	cl -D UNICODE -D _UNICODE -c window.cxx
	link window.obj window.res -SUBSYSTEM:WINDOWS /OUT:window.exe user32.lib comdlg32.lib gdi32.lib uuid.lib comctl32.lib

clean:
	del *.exe
	del *.obj
	del *.res
Пам'ятайте, Ви повинні замінити усі імена файлів на власні. Код, який ми компілюємо взятий з останньої частини моєї попередньої статті про створення вікон в ОС Віндовс. Компілюємо і збираємо усі файли командами: compile_commands Відкриємо директорію розміщення усіх файлів і побачимо приблизно наступну картину: expl Виконуваний файл з розширенням “.exe” тепер відображається з іконкою біля назви і додатковою інформацію. При запуску програми ми отримаємо наступне: window У порівнянні з попереднім виглядом: windows_window_with_elements У вікні заголовка іконка з меніфест-файлу не буде відображатися. Для цього потрібно використовувати повідомлення WM_SETICON.
Категорії: