Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Child MDI Dialog in MDI, можно ли сделать чтобы сhild был Dialog 
:(
    Опции темы
ano360
Дата 4.5.2009, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть  MDI MDF Application можно ли сделать чтобы Child MDIокна были DialogBox ами?
Или сделать чтобы DialogBox вел себя как Child MDI окно:
 - двигался только в пределе "рабочей области"
 - при активации DialogBox основное окно оставалось активным, как это происходит при активации child MDI окна
может можно при создании указать некий стиль? типа WS_CHILD


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 4.5.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(ano360 @  4.5.2009,  10:29 Найти цитируемый пост)
Есть  MDI MDF Application можно ли сделать чтобы Child MDIокна были DialogBox ами?

нет

Цитата(ano360 @  4.5.2009,  10:29 Найти цитируемый пост)
Или сделать чтобы DialogBox вел себя как Child MDI окно:

можно, но тяжело (много кода).

Возникает вопрос - зачем? Если тебя интересует создание окна со многими контролами из ресурсов, то может, обойдешься видом - формой? Т.е. как-бы диалогом можно сделать вид внутри чайлд-фрейма. Смотри CFormView.


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


Опытный
**


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

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



Код

 Если тебя интересует создание окна со многими контролами из ресурсов, то может, обойдешься видом - формой? Т.е. как-бы диалогом можно сделать вид внутри чайлд-фрейма. Смотри CFormView.

в принципе идея понята. а можно поподробнее?
как сделать вид внутри чайлд фрейма диалогом?
можно подробнее указать направление поиска?

Добавлено через 5 минут и 50 секунд
нашел такой материал. как я понимаю это то на эту тему разговор?
http://74.125.77.132/search?q=cache:kkGfk6...mp;client=opera

Это сообщение отредактировал(а) ano360 - 4.5.2009, 11:25


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
ano360
Дата 4.5.2009, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



только тут все как то очень сумбурно. сходу не поймешь
я правильно понял?
нужно создать класс унаследованный от CFormView
написать конструктор в котором как то указазать из какого ресурса брать шаблон для создания вида.
создать объект вида и укзатать его как текущий для Child формы.


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


Эксперт
****


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

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



Ну, в принципе, да.
Попробуй для разминки сгенерировать новый MFC-проект визардом и укажи ему, что базовым классом вида будет CFromView. Тогда он тебе все заготовки нагенерирует. Там еще важно ресурс диалога с правильными свойствами создать. А вообще все довольно просто - не сложнее, чем с диалогом или обычным видом. 



--------------------
...
PM   Вверх
ano360
Дата 4.5.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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

Это сообщение отредактировал(а) ano360 - 4.5.2009, 18:32


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
ano360
Дата 4.5.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сделал как вы сказали
Да. надо свойство Style в PopUp.

Нашел что при нажатии File->New вызывается CWinApp::OnFileNew и видимо она и создает новое Сhild окно
Допустим. 
Но где в данном проекте код создающий child окно появляющается сразу при старте приложения....Я уже голову сломал...

Это сообщение отредактировал(а) ano360 - 4.5.2009, 19:29


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
ano360
Дата 4.5.2009, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сгорем пополам заработало...
Материал брал отсюда:http://forum.sources.ru/index.php?act=ST&f=4&t=49952
Хотя понимания производимых действий как не было так и нет...

Да и результат ожидался немного другой. Можно например сделать чтобы не было бордюра(ступеньки такой) по краям Child ?

И по прежнему стоит открытым вопрос где же всетаки код создающий новое Child окно

Это сообщение отредактировал(а) ano360 - 4.5.2009, 20:21


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


Эксперт
****


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

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



Цитата(ano360 @  4.5.2009,  21:18 Найти цитируемый пост)
И по прежнему стоит открытым вопрос где же всетаки код создающий новое Child окно

Проще всего изучать код с помощью дебагера. Окна стандартно создаются в шаблоне документа - что-то вроде CreateNewFrame. Ставишь туда точку прерывания и смотришь по стеку, откуда вызов пришел.


--------------------
...
PM   Вверх
ano360
Дата 5.5.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нашел. спасибо за подсказку. брейкпоинтами я уже давно пользуюсь а вот про стек ничего не знал.
выяснилось что создание первого Child окна происходит при работе кода:
Код

CComandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if(!ProcessShellCommand(cmdInfo));
return false;

закоментировал этот код. вроде все теперь работает правильно....
однако слижком уж странный код. Не оключил ли я еще что-нибудь важное вместе с этим?



--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 5.5.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

Вроде здесь (конструктор CCommandLineInfo). Видишь, инициализируется командой FileNew.
Код

CCommandLineInfo::CCommandLineInfo()
{
    m_bShowSplash = TRUE;
    m_bRunEmbedded = FALSE;
    m_bRunAutomated = FALSE;
    m_nShellCommand = FileNew;
}

Достаточно убрать (заменить FileNothing) и не будет ничего создаваться.


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


Опытный
**


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

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



сделал так и теперь все как нужно:

Код

CCommandLineInfo cmdInfo;
cmdInfo.m_nShellCommand=CCommandLineInfo::FileNothing ;
ParseCommandLine(cmdInfo);

if (!ProcessShellCommand(cmdInfo))
        return FALSE;

я уж не стал вмешиваться в исходники....

P.S. Большое вам спасибо за помощ


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


Эксперт
****


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

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



Я это и имела в виду, а не вмешательство в исходники. Можно еще ParseCommandLine переопределить, чтобы не засорять код деталями.


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


 




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


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

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