![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| CaptainFlint |
|
|||
|
Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
Суть вот в чем. У меня есть программа, в ней - диалог "Настройки" с несколькими вкладками. На одной из них - выбор языка. При нажатии кнопки "Применить" должен меняться язык программы, но диалог не закрывается. Как сделать, чтобы язык диалога тоже менялся? Язык собственно меняю с помощью AfxSetResourceHandle(LoadLibrary(...)), но перечитать ресурс этого диалога "на лету" оттуда не удается... Если закрыть и снова открыть диалог, то да, он становится на нужном языке, но тогда нельзя будет отменить действия, пропадает весь смысл кнопки "Применить".
-------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
UpdateWindow не катит?
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
попробуй послать WM_INITDIALOG
-------------------- ![]() |
|||
|
||||
| CaptainFlint |
|
|||
|
Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
UpdateWindow() ничего не делает.
Если посылаю WM_INITDIALOG себе (CPropertyPage), то ничего не происходит, только заново выполняется код OnInitDialog(), а там пересчитывания с ресурса нету. Если же шлю его базовому диалогу (CPropertySheet), то программа падает. -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
сделай функцию для замены надписей....
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
т.е. в тупую
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| CaptainFlint |
|
|||
|
Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
Step
Втупую нельзя: вдруг надписи не поместятся в отведенное место? Да и кроме того придется дублировать весь ресурс диалога в строковые ресурсы, а это нехорошо... -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
| Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
А по-моему, так и нужно делать и смысл кнопки "Применить" именно в возможности сохранить изменения без закрытия диалога. Это в какой программе можно отменить то, что было применено?! -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
| CaptainFlint |
|
|||
|
Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
Ars
Ну я же говорю, что не согласен в этом вопросе с мелкомягкими А если не оффтопить, то появилась у меня одна идейка: создать новый диалог (с новым языком), и все контролы перебрать и установить их параметры на новые. Т.е. по сути заставить прогу считать ресурс диалога и данные из уже считанного перекачать в существующий. Пока это на стадии поиска возможности перебрать все контролы без явного указания их идентификаторов, т.е. в цикле. Иначе какой-нить новый контрол добавлю - и код смены языка апдейтить... -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
| Ars |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Все это философия и я готов пофилософствовать, но краткое резюме такое: отойти от стандарта - нажить геморрой
Можно применить функцию EnumChildWindows, а контролы различать по Tabstop'у, ID или еще чему нибудь -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
||||
|
|||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
если я правильно понял то по пременить может вообще изменить структура диалога, и количесто элементов и расположения и вообще все, тоесть полностью другой ресурс, а не только язык ресурса. ТАК ИЛИ НЕТ
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| CaptainFlint |
|
|||
|
Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
Ars
Надо же, я как раз набрел на функцию EnumChildWindows Step Ты правильно понял, такое можно было бы сделать по моей первоначальной идее. Да, это нехорошо, не спорю, да, могут быть ошибки. Но зато как легко было бы реализовать -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
А ты непробывал делать длл с диалогам и разными ресурсами, а твоя основаня прога просто переключает длл
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| CaptainFlint |
|
|||
|
Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
Step
Я именно так и делаю (см. мой самый первый пост). Но переключить таким способом собственно диалог, в котором я выбираю язык, без его закрытия у меня не получается. Об этом и был первоначальный вопрос: как это сделать. -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
Константин, шаблон диалога устанавливается в функции креате класса диалог, и вот ее надо перегрузить....
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |