iteg
После пересборки вроде наверное бОльшая часть вопросов отошла.
Сейчас реально есть видимость и Английского И Русского языков.
И мы теперь реально можем показать древо версионности на энных языках,
спрятанных под одним лишь идентификатором VS_VERSION_INFO.
Но что осталось - это та самая кодовая страница)))
Ведь вроде как, подняв историю переписки тут, я вижу, что и в ваших тестах:
iteg писал(а):Добавлено: Сб Дек 28, 2024 15:43
.......
Тестовый пример:
LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
//LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
//LANGUAGE LANG_RUSSIAN, SUBLANG_SYS_DEFAULT
//LANGUAGE LANG_RUSSIAN, 3
103 DIALOGEX 0, 0, 292, 218, 0
STYLE WS_POPUP | WS_BORDER
EXSTYLE WS_EX_RIGHT | WS_EX_RTLREADING | 0x00400000
CAPTION "Error!"
FONT 8, "MS Shell Dlg", 0
BEGIN
CTEXT "Select One:", 1, 10, 10, 280, 12
PUSHBUTTON "&Retry", 2, 75, 30, 60, 12
PUSHBUTTON "&Abort", 3, 75, 50, 60, 12
PUSHBUTTON "&Ignore", 4, 75, 80, 60, 12
END
- LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
0x0019 (25) (Russian), 0x0000 (0) (ANSI - Cyrillic)
- LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
0x0419 (1049) (Russian (Russia)), 0x0000 (0) (ANSI - Cyrillic)
- LANGUAGE LANG_RUSSIAN, SUBLANG_SYS_DEFAULT
0x0819 (2073) (Russian (Moldova)), 0x0000 (0) (ANSI - Cyrillic)
- LANGUAGE LANG_RUSSIAN, 3
0x0C19 (3097) (Language Neutral), 0x0000 (0) (ANSI - Cyrillic)
Для ресурса DIALOGEX изменяется только значение поля Language, а CodePage остается 0.
добиться контролируемого изменения значения этого Компонента - не удалось. Всегда 0.
И похоже, что макрос вида LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT отвечает ТОЛЬКО лишь
за факт смены/выставления языка, но никак не кодовой страницы ресурса.
Ну и далее вы пишите, что вроде как это нормально - по умолчанию так и есть. НО, типа, можно
вроде как и принудительно выставить то, что надо. И вот как раз приводите в пример:
Например, в папке ТС 11.51 TC7Z64.DLL CP="0x04E4 (1252) (ANSI - Latin I)".
Но мы же видели, что в исходниках проекта этого значения нет! Возможно Гислер при компиляции под себя
ЧТО-ТО и ДОнастроил... НО вот вопрос тогда - ТАК ЧТО можно настраивать, чтобы это поле принимало реально
другие значения, а не этот раздражающий 0? В вашем тестовом примере WindowsAppTest тоже же всё с нулём.
Вот сможете что-то ЭДАК перевыставить в этом проекте, чтобы к примеру, так же СР=1252 получилось?
Ну, или для нас более ближний вариант - 866? Или вообще юникод 1200?
Вот что есть в инете:
[cut="на инглише (я понимаю, что вы и так это знаете - скорее заметка для меня)"]Languages and Code Pages
The Language level of the Resource Table represents the language of the resources. Language identifiers consist of a primary language identifier and a sublanguage identifier, representing the language and the country/region, respectively.
Code pages are used to map character sets for non-Unicode applications. The code page for a resource is given in the IMAGE_RESOURCE_DATA_ENTRY structure. Information about a code page can be retrieved using the GetCPInfoEx function in the Windows API.
It is important to note that while language identifiers and code pages provide a way to support localization in Windows applications, they represent different aspects. Language identifiers are about linguistics while code pages are about character encoding.[/cut]
Т.е. "читать" вроде как это можно даже на уровне API. Ну а где же тогда храниться функционал "записи" этой инфы?
Что вот Гислер смог-таки это сделать.... Ведь этот пресловутый файл TC7Z64.DLL он-таки как-то собрал сам! А не взял откуда-то готовый.