Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение диалога в рантайме, Причем глобальное 
:(
    Опции темы
CaptainFlint
  Дата 13.10.2003, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


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

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



Суть вот в чем. У меня есть программа, в ней - диалог "Настройки" с несколькими вкладками. На одной из них - выбор языка. При нажатии кнопки "Применить" должен меняться язык программы, но диалог не закрывается. Как сделать, чтобы язык диалога тоже менялся? Язык собственно меняю с помощью AfxSetResourceHandle(LoadLibrary(...)), но перечитать ресурс этого диалога "на лету" оттуда не удается... Если закрыть и снова открыть диалог, то да, он становится на нужном языке, но тогда нельзя будет отменить действия, пропадает весь смысл кнопки "Применить".


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
RAN
Дата 13.10.2003, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



UpdateWindow не катит?
PM MAIL ICQ   Вверх
mr.DUDA
Дата 13.10.2003, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

Репутация: 25
Всего: 232



попробуй послать WM_INITDIALOG



--------------------
user posted image
PM MAIL WWW   Вверх
CaptainFlint
Дата 14.10.2003, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


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

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



UpdateWindow() ничего не делает.
Если посылаю WM_INITDIALOG себе (CPropertyPage), то ничего не происходит, только заново выполняется код OnInitDialog(), а там пересчитывания с ресурса нету. Если же шлю его базовому диалогу (CPropertySheet), то программа падает.


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Step
Дата 14.10.2003, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 5
Всего: 25



сделай функцию для замены надписей....


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Step
Дата 14.10.2003, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 5
Всего: 25



т.е. в тупую


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
CaptainFlint
Дата 14.10.2003, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


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

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



Step
Втупую нельзя: вдруг надписи не поместятся в отведенное место? Да и кроме того придется дублировать весь ресурс диалога в строковые ресурсы, а это нехорошо...


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Ars
Дата 15.10.2003, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

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



Цитата
Если закрыть и снова открыть диалог, то да, он становится на нужном языке, но тогда нельзя будет отменить действия, пропадает весь смысл кнопки "Применить".

А по-моему, так и нужно делать и смысл кнопки "Применить" именно в возможности сохранить изменения без закрытия диалога. Это в какой программе можно отменить то, что было применено?! wink.gif


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
CaptainFlint
Дата 15.10.2003, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


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

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



Ars
Цитата
Это в какой программе можно отменить то, что было применено?!

Ну я же говорю, что не согласен в этом вопросе с мелкомягкими smile.gif Это же с их подачи такая трактовка сейчас идет... Ну поставил я арабский язык случайно, нажал "Применить", и все. Ладно, если, как у меня, названия языков в списке меняться не будут. А если будут? Или если долго выбирал, подбирал себе хорошие настройки, а потом решил поэкспериментировать. Нажал "применить" - и хана, все настройки хорошие забылись. Так что ли? Не-ет, я так не согласен. Но вопрос не о том, как надо реализовать концепцию настроек, а немножко про другое ;) Так что это оффтоп...
А если не оффтопить, то появилась у меня одна идейка: создать новый диалог (с новым языком), и все контролы перебрать и установить их параметры на новые. Т.е. по сути заставить прогу считать ресурс диалога и данные из уже считанного перекачать в существующий. Пока это на стадии поиска возможности перебрать все контролы без явного указания их идентификаторов, т.е. в цикле. Иначе какой-нить новый контрол добавлю - и код смены языка апдейтить...


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Ars
Дата 15.10.2003, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

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



Цитата
Ну я же говорю, что не согласен в этом вопросе с мелкомягкими  Это же с их подачи такая трактовка сейчас идет... Ну поставил я арабский язык случайно, нажал "Применить", и все. Ладно, если, как у меня, названия языков в списке меняться не будут. А если будут? Или если долго выбирал, подбирал себе хорошие настройки, а потом решил поэкспериментировать. Нажал "применить" - и хана, все настройки хорошие забылись. Так что ли? Не-ет, я так не согласен. Но вопрос не о том, как надо реализовать концепцию настроек, а немножко про другое ;) Так что это оффтоп...

Все это философия и я готов пофилософствовать, но краткое резюме такое: отойти от стандарта - нажить геморрой

Цитата
это на стадии поиска возможности перебрать все контролы без явного указания их идентификаторов, т.е. в цикле

Можно применить функцию EnumChildWindows, а контролы различать по Tabstop'у, ID или еще чему нибудь


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
Step
Дата 15.10.2003, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 5
Всего: 25



если я правильно понял то по пременить может вообще изменить структура диалога, и количесто элементов и расположения и вообще все, тоесть полностью другой ресурс, а не только язык ресурса. ТАК ИЛИ НЕТ


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
CaptainFlint
Дата 15.10.2003, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


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

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



Ars
Надо же, я как раз набрел на функцию EnumChildWindows smile.gif Буду пробовать. А различать по ID можно. Я так понимаю, ID - это и есть идентификатор контрола в данном случае.
Step
Ты правильно понял, такое можно было бы сделать по моей первоначальной идее. Да, это нехорошо, не спорю, да, могут быть ошибки. Но зато как легко было бы реализовать smile.gif По новой же идее все будет ок, ни новые не добавятся, ни старые не исчезнут. Будет меняться только текст, размер и положение контрола (может, чего упустил, но это неважно).


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Step
Дата 15.10.2003, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 5
Всего: 25



А ты непробывал делать длл с диалогам и разными ресурсами, а твоя основаня прога просто переключает длл


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
CaptainFlint
Дата 15.10.2003, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


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

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



Step
Я именно так и делаю (см. мой самый первый пост). Но переключить таким способом собственно диалог, в котором я выбираю язык, без его закрытия у меня не получается. Об этом и был первоначальный вопрос: как это сделать.


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Step
Дата 16.10.2003, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 5
Всего: 25



Константин, шаблон диалога устанавливается в функции креате класса диалог, и вот ее надо перегрузить....


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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