Hi! Спасибо за ответы на 1335 и 1338. Продолжение вопроса номер 1335(см приложение). Будьте добры пример использования такого dll. В нете ничего пока не нашел. With best regards. alexneta.
Приветствую Вас, alexneta! Вариантов несколько: 1. Если надо переводить исключительно строки, то достаточно простого текстового файла. Из этого файла грузим содержимое в map вида <идентификатор_строки, локализованная_строка>. Когда надо, ищем в этом map'е строку по заданному идентификатору. 2. Надо локализовывать строки, диалоги, меню, иконки и т.д. Есть два варианта: a) Создать одну dll с ресурсами на всех языках. Тогда используем так (для MFC): HMODULE resModule = LoadLibrary( "res.dll" ); AfxSetResourceHandle( resModule ); SetThreadLocale( lang ); CDialog dlg1( ID_DLG1 ); dlg1.DoModal(); AfxSetResourceHandle( AfxGetInstanceHandle() ); FreeLibrary(resModule); Странно, но у меня на W2K SP4 это работает для всех случаев, кроме того, когда нужный язык ресурсов совпадает с текущим языком
пользователя Windows. Интересно, как MS этого добился???? Видимо, глючит функция FindResource, которая используется в MFC, а вот FindResourceEx - работает. b) Создать свою dll для каждого языка. Используем точно также, только грузим разные dll'ки в зависимости от языка. С уважением, Avl2k. Ответ отправлен: 25.12.2003, 18:36 Отправитель: Avl2k
Вопрос № 1346
Hi! Подскажите, пожалуйста, как определить какая всплывающая менюшка выбрана? Пробовал как в приложении, но GetMenu возвращает null, так как в моей программе имеется только всплывающее меню. Если можно пример. With best regards. alexneta.
Здравствуйте, alexneta! Не совсем понятно, где Вы все это делаете. Я так понял, что "всплывающая менюшка" - это popup menu. Тогда это пишется обычно так: на OnRButtonDown: CMenu m; m.LoadMenu( IDR_MENU1 ); CMenu* pop = m.GetSubMenu( 0 ); pop->TrackPopupMenu( 0, 0, 0, this ); Если Вам нужно, чтобы некоторый пункт был с галочкой, то проще всего завести в классе флажок, в обработчике COMMAND этого ID его переключать, а в обработчике UPDATE_COMMAND_UI это ID написать что-то вроде: void CMyWnd::OnUpdateCmd1(CCmdUI* pCmdUI) { pCmdUI->SetCheck( m_flag ); } С уважением, Avl2k.
Ответ отправлен: 25.12.2003, 18:51 Отправитель: Avl2k
Вопрос № 1347
Хочу немного подучить с++ Но с пониманием нерусских языков у меня проблемма. Где бы взять руководство, где всё объясняется с нуля (то есть объясняется каждый символ) Таких подробных пособий я пока не видел. Буду очень рад, если вы мне поможете. З.Ы. Если не трудно - дубрировать ответ по почте, а то я боюсь, что не скоро в сети буду. Удачи.
Добрый день, Летящий! Посмотри эти адреса, там очень хорошие справочники! http://www.zsu.zp.ua/lab/MathDep/ApMath/OOP/index1.htm http://www.zsu.zp.ua/lab/MathDep/ApMath/cppbuilder/ Ответ отправлен: 24.12.2003, 01:25 Отправитель: Phenix
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.