Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мультиязычное приложение, что для ентого нужно 
:(
    Опции темы
AlexPro
Дата 24.5.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Цитата(Earnest @  24.5.2006,  22:58 Найти цитируемый пост)
Просто, но муторна. После третьего диалога уже хочется застрелиться. 

Earnest совершенно права!
SeregaLBN, нельзя же так пугать! smile  Все это можно существенно упростить.

1. Используем секции в ini-файле (для каждого диалога своя секция), что позволяет использовать числа, уникальные только для диалога, но не обязательно для всего проекта, а также упрощает работу с ini-файлом.

2. Используем числа, соответствующие значениям идентификаторов (для чего - см. ниже)

3. Создаем функцию, которая будет извлекать строку и изменять элемент. Поскольку ID элемента равен числу в ini-файле, в функцию достаточно передавать один параметр (за исключением hwnd), что быдет выглядеть примерно как Translate(hwnd, IDC_STATIC_FIRST);, а если закинуть в базовай класс окна, то и того меньше: Translate(IDC_STATIC_FIRST);

Вероятно, можно даже организовать в этой функции цикл с обходом всех элементов и тогда нам не потребуется вызывать  Translate для каждого элемента, а просто один раз в OnInitDialog вызвать Translate(); (совсем без параметров!) и мы получим желаемый результат.
Но подходит это только для диалогов. 
PM MAIL   Вверх
Earnest
Дата 25.5.2006, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(AlexPro @  24.5.2006,  19:07 Найти цитируемый пост)
Но подходит это только для диалогов.  

Теоретически для любых окон. Только перевод делается в другом месте. Реально, нужно еще только для блокнотов (PropertySheet): там перевод делается для каждой страницы.
Кстати, не забудте о переводе строк комбобокса, которые добавляются непосредственно в ресурсах. 

А что еще нужно? Меню - сразу после загрузки (LoadMenu), можно свой класс сочинить и там функцию перегрузить. Ну еще в LoadFrame можно добавить.
 


--------------------
...
PM   Вверх
takedo
Дата 25.5.2006, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: нет
Всего: 3



Earnest, а как из утилиты сразу ресурсы высмотреть и отобразить какие там диалоги, строки и т.д.??? 


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Earnest
Дата 25.5.2006, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



В смысле, как добраться до ресурсов другого исполняемого модуля?
Грузишь (LoadLibrary, exe тоже можно) с флагом что-то про ресурсы, без разрешения ссылок. Получаешь HINSTANCE и перебираешь ресурсы. Точно сейчас функции не вспомню, но было тема в этом форуме или в API о ресурсах, я там писала, как перечислить ресурсы.
 


--------------------
...
PM   Вверх
takedo
Дата 25.5.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: нет
Всего: 3



нашёл размышления Kergan- влепил ему плюс, думаю можно будет если что разобраться smile Но конечно твоя интерпретация была бы бесцеллером smile  


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Earnest
Дата 25.5.2006, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Поищи в этом форуме слово "EnumResourceTypes".
А еще вот статья MSDN:
Цитата

Using Resources 

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

This section contains code snippets for the following tasks:

Updating Resources
Creating a Resource List
Updating Resources
The following example copies a dialog box resource from one executable file, Hand.exe, to another, Foot.exe, by following these steps: 

Use the LoadLibrary function to load the executable file Hand.exe. 
Use the FindResource and LoadResource functions to locate and load the dialog box resource. 
Use the LockResource function to retrieve a pointer to the dialog box resource data. 
Use the BeginUpdateResource function to open an update handle to Foot.exe. 
Use the UpdateResource function to copy the dialog box resource from Hand.exe to Foot.exe. 
Use the EndUpdateResource function to complete the update. 

Найди ее (есть переход из описания EnumResourceTypes), там есть примеры. 


--------------------
...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.