Destiny
|
Posted: Mon Mar 24, 2025 20:29 Post subject: |
|
|
iteg
После пересборки вроде наверное бОльшая часть вопросов отошла.
Сейчас реально есть видимость и Английского И Русского языков.
И мы теперь реально можем показать древо версионности на энных языках,
спрятанных под одним лишь идентификатором VS_VERSION_INFO.
Но что осталось - это та самая кодовая страница)))
Ведь вроде как, подняв историю переписки тут, я вижу, что и в ваших тестах:
iteg wrote: | Добавлено: Сб Дек 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 отвечает ТОЛЬКО лишь
за факт смены/выставления языка, но никак не кодовой страницы ресурса.
Ну и далее вы пишите, что вроде как это нормально - по умолчанию так и есть. НО, типа, можно
вроде как и принудительно выставить то, что надо. И вот как раз приводите в пример:
Quote: | Например, в папке ТС 11.51 TC7Z64.DLL CP="0x04E4 (1252) (ANSI - Latin I)". |
Но мы же видели, что в исходниках проекта этого значения нет! Возможно Гислер при компиляции под себя
ЧТО-ТО и ДОнастроил... НО вот вопрос тогда - ТАК ЧТО можно настраивать, чтобы это поле принимало реально
другие значения, а не этот раздражающий 0? В вашем тестовом примере WindowsAppTest тоже же всё с нулём.
Вот сможете что-то ЭДАК перевыставить в этом проекте, чтобы к примеру, так же СР=1252 получилось?
Ну, или для нас более ближний вариант - 866? Или вообще юникод 1200?
Вот что есть в инете:
 на инглише (я понимаю, что вы и так это знаете - скорее заметка для меня) 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.
Т.е. "читать" вроде как это можно даже на уровне API. Ну а где же тогда храниться функционал "записи" этой инфы?
Что вот Гислер смог-таки это сделать.... Ведь этот пресловутый файл TC7Z64.DLL он-таки как-то собрал сам! А не взял откуда-то готовый.
Last edited by Destiny on Thu Apr 03, 2025 13:07; edited 1 time in total |
|