Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как поменять заголовок дочернего окна в MDI?  (Прочитано 13048 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« : 26-06-2006 07:22 » 

Обнаружил такую штуку - ставишь заголовок через SetWindowText(...) Вроде ставится Затем создается следующее окно и все сбрасывается((
Как победить?
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 26-06-2006 09:32 » 

MFC?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #2 : 26-06-2006 09:36 » 

MFC
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 26-06-2006 09:55 » new

Посмотри виртуальную ф-ю объекта CDocument::SetTitle(CString) - она устанавливает имя документа и соответственно имя CChildFrame.

зы Я имею ввиду вызывай её с нужным текстом Ага
« Последнее редактирование: 26-06-2006 09:58 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #4 : 26-06-2006 10:05 » 

Забыл написать
Я не использую Document/View прдставление У меня CMDIChildWnd
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 26-06-2006 11:44 » 

Тогда посмоьри в исходниках MFC, что в "нормальном" случае делает SetTitle, какие переменные меняет. Или же CMDIChildWnd Во всяком случае должна быть переменная у объекта, которую SetWindowText не переписывает (это API-шный враппер). Кстати у CMDIChildWnd (у CFrameWnd) тоже есть SetTitle

зы А собственно говоря, почему нет? Ведь въюха тебе всё-равно нужна. А документ можно и не использовать. ИМХО гораздо удобней, всё-равно ведь MFC.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #6 : 26-06-2006 14:19 » 

а как в визуал С++ создаётся окно? в object pascal объявляется класс, TForm, у которого есть свойство Caption (соответствующее виндовому Text) и при создании экземпляра класса это свойство инициализируется значением, задаваемым в дезайн-тайме. не уверен, что здесь уместна подобная аналогия, но ощущение такое, что заголовок окна меняется у экземпляра класса, а не у самого класса, и соответственно при создании каждого нового экземпляра значение инициализируется исходным значением соответствующего свойства класса.
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 26-06-2006 15:38 » 

Проблема в том, что SetWindowText изменяет параметры структуры окна на уровне API. У MFC-шных объектов есть свои поля для подобных вещей, например у изменённых chaild в MDI при изменении добавляются * и тд. Поэтому инфа после  SetWindowText держится до след. апдейта. Потом она переписывается данными из мембер-переменной.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #8 : 27-06-2006 07:12 » 

Сделал так:
   //Меняем заголовок окна
    SetTitle(FileName);
     SetWindowText(FileName);

Вроде бы заработало как надо... странно...
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
acc15
Гость
« Ответ #9 : 27-06-2006 17:11 » 

могу сказать ещё одно - мфц это г*вно...
даже в рифму =)
VCL полюбому лучше, однако жаль не поддерживается по дефолту микрософтом как мфц, поэтому получаются такие объемные программы

ЗЫ: не в тему зато правда
« Последнее редактирование: 27-06-2006 17:13 от acc15 » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 27-06-2006 18:52 » 

acc15, гонишь.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines