Добавлено: Сб ноя 23, 2024 13:20
1)
2)
https://learn.microsoft.com/en-us/windo ... o-resource
Описание параметра "versionID" - "Version-information resource identifier. This value must be 1."
3)
Во время построения дерева ресурсов плагин анализирует каждый тип ресурса и, если необходимо, задает новый.
Например, типа ресурса PNG нет, ресурс имеет тип RT_BINARY = 0 (не рассматриваем иконки), но я его интерпретирую как свой тип RT_PNG = 27. Получается - "0 (27 (PNG))".
Круглые скобки использую для отображения количества элементов или для расшифровки смысла значения перед ними.
С 1 по 25 константы стандартные, после 25 - мои.
RT_CURSOR, RT_STRING, RT_VERSION и т.д.
Стандартные константы описаны, если установлена Visual Studio, например, в:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\WinUser.h
4)
Структура tagVS_FIXEDFILEINFO в:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\verrsrc.h
или
https://learn.microsoft.com/en-us/previ ... 3dmsdn.10)
5)
https://learn.microsoft.com/en-us/windo ... rc-section
6)
По умолчанию поле CodePage в ресурсе 0.
7)
8 )
9)
10)
11)
https://learn.microsoft.com/en-us/windo ... rc-section
12)
12)
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
BEGIN
0 "Test1"
11 "Test2"
16 "Test3"
100 "Test4"
101 "Test5"
<идентификатор строки> "строка"
END
Будет 3 блока: 1, 2 и 7.
Ресурсный компилятор для STRINGTABLE создает блоки по 16 элементов и автоматически проставляет блокам индексы/имена. Индексация начинается с 1.
Т.е. идентификаторы строк с 0 по 15 - это блок с индексом 1.
16 по 31 - это блок с индексом 2.
Например, берем строку с идентификатором 0xFE90 делим на 16 = 4073 + 1 = 4074 индекс блока.
Да, знаю про это. Добавил в список для решения.Начнем явно с бага - на вкладке Ресурсы внизу дерева есть панель со столбцами "Свойство \ Значение" ... Чтобы полосы прокрутки не появлялись.
2)
1 - это принятый Microsoft идентификатор, а не имя.Ок, раз просто 1 это вроде как прямое указание на стандартный тип ресурса- пусть так и пишется
https://learn.microsoft.com/en-us/windo ... o-resource
Описание параметра "versionID" - "Version-information resource identifier. This value must be 1."
3)
Формат вывода типа ресурса - "<оригинальный тип ресурса> (<интерпретируемый тип ресурса> (<текстовое имя интерпретируемого тип ресурса>))".16 (16 (Version))
Во время построения дерева ресурсов плагин анализирует каждый тип ресурса и, если необходимо, задает новый.
Например, типа ресурса PNG нет, ресурс имеет тип RT_BINARY = 0 (не рассматриваем иконки), но я его интерпретирую как свой тип RT_PNG = 27. Получается - "0 (27 (PNG))".
Круглые скобки использую для отображения количества элементов или для расшифровки смысла значения перед ними.
С 1 по 25 константы стандартные, после 25 - мои.
RT_CURSOR, RT_STRING, RT_VERSION и т.д.
Стандартные константы описаны, если установлена Visual Studio, например, в:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\WinUser.h
4)
Это рудимент для старых ОС. Насколько помню, использовалось загрузчиком исполняемых файлов для решения проблемы версионности и зависимостей.Для раздела VS_FIXEDFILEINFO походу добавился вывод поля File Date
Структура tagVS_FIXEDFILEINFO в:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\verrsrc.h
или
https://learn.microsoft.com/en-us/previ ... 3dmsdn.10)
5)
Описание структуры секции ресурсов:А вот данные про Язык и Кодовую страницу - нет, не понимаю.
Ведь из справок и глазками в редакторе RC-файла мы же четко поняли, что ВСЯ инфа о языке присутствует ЛИШЬ
внутри этого ресурса в полях секции "StringFileInfo" в заголовке BLOCK "lang-charset".
https://learn.microsoft.com/en-us/windo ... rc-section
6)
Согласен, что сбивает понимание, но такой результат выдает ОС. "ANSI" - определяет 8-битную кодировку, "кириллица" - определяет использование "Cyrillic script" для таких языков как русский, украинский, белорусский, болгарский, сербская кириллица, македонский и т.д. Сопоставимо с Windows-1251.Ну и скобочках вижу Английский (США). А потом идет кодовая страница "0 - ANSI - кириллица"
По умолчанию поле CodePage в ресурсе 0.
7)
Каждый ресурс имеет "Level 3 - Language" и поле CodePage.А то и для Иконок вдруг появляются эти блоки, и инфа о том, что не вяжется с графический примитивами...
8 )
Этот элемент контекстного меню строится динамически и имена подэлементов меню берутся из названий колонок списочного элемента. "Копировать значение" это выполняемое действие, далее подэлемент меню "Значение" - это заголовок соответствующей колонки, из которой пользователь будет копировать данные.НО когда мы зайдем в подпункты этого подменю - мы увидим раздельно "Свойство", раздельно ОПЯТЬ "Значение". Т.е. как бы масломасляное.
9)
Предполагаю, что это или рудименты или несут системное значение. Подстветку пока не реализовал.Там вот НЕТ в таблицах языков 0 и 9!
10)
Занимаясь разбором системных структур Windows ОС, понял, что на официальную справку полностью полагаться нельзя. Описания структур на сайте Microsoft часто содержат ошибки, неточности или только общее описание. Приходится сверять с описанием в h-ках, искать в других источниках, реверсировать приложения и системные модули и т.д.НО правда по прежнему висит сугубо уже теоретический, но тем не менее вопрос - это как же они умудрились просрать справку, что по факту надо делать НЕ ТО, что там описано!?
11)
Описание структуры секции ресурсов:НО! вот где и как вдруг оказалось расписанным, что именования ресурсов - ВСЕ имена ресурсов - имеют какой-то язык и кодостраницу?
https://learn.microsoft.com/en-us/windo ... rc-section
12)
Удобна при большом количестве элементов. Не надо запоминать идентификатор, менять режим отображения и искать в списке ресурсов для получения свойств.Та самая панелька, что я описывал как имеющую баг относительно раздвигания ее размеров по высоте - кажется
становится все менее полезной?
12)
STRINGTABLEРаскрываю этот один узел и вижу элемент.... А откуда у него имя "7"?
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
BEGIN
0 "Test1"
11 "Test2"
16 "Test3"
100 "Test4"
101 "Test5"
<идентификатор строки> "строка"
END
Будет 3 блока: 1, 2 и 7.
Ресурсный компилятор для STRINGTABLE создает блоки по 16 элементов и автоматически проставляет блокам индексы/имена. Индексация начинается с 1.
Т.е. идентификаторы строк с 0 по 15 - это блок с индексом 1.
16 по 31 - это блок с индексом 2.
Например, берем строку с идентификатором 0xFE90 делим на 16 = 4073 + 1 = 4074 индекс блока.