| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Child MDI Dialog in MDI |
| Автор: ano360 4.5.2009, 09:29 |
| Есть MDI MDF Application можно ли сделать чтобы Child MDIокна были DialogBox ами? Или сделать чтобы DialogBox вел себя как Child MDI окно: - двигался только в пределе "рабочей области" - при активации DialogBox основное окно оставалось активным, как это происходит при активации child MDI окна может можно при создании указать некий стиль? типа WS_CHILD |
| Автор: ano360 4.5.2009, 11:23 | ||
в принципе идея понята. а можно поподробнее? как сделать вид внутри чайлд фрейма диалогом? можно подробнее указать направление поиска? Добавлено через 5 минут и 50 секунд нашел такой материал. как я понимаю это то на эту тему разговор? http://74.125.77.132/search?q=cache:kkGfk66E2q4J:forum.sources.ru/index.php%3Fact%3DPrint%26client%3Dwordr%26f%3D4%26t%3D49952+CFormView&cd=2&hl=ru&ct=clnk&lr=lang_ru&client=opera |
| Автор: ano360 4.5.2009, 12:10 |
| только тут все как то очень сумбурно. сходу не поймешь я правильно понял? нужно создать класс унаследованный от CFormView написать конструктор в котором как то указазать из какого ресурса брать шаблон для создания вида. создать объект вида и укзатать его как текущий для Child формы. |
| Автор: Earnest 4.5.2009, 14:32 |
| Ну, в принципе, да. Попробуй для разминки сгенерировать новый MFC-проект визардом и укажи ему, что базовым классом вида будет CFromView. Тогда он тебе все заготовки нагенерирует. Там еще важно ресурс диалога с правильными свойствами создать. А вообще все довольно просто - не сложнее, чем с диалогом или обычным видом. |
| Автор: ano360 4.5.2009, 18:29 |
| да не спорю, только вот по крохам собирать по интернету информацию и складывать из нее как из мозайки целостную картину довольно утомительно, хотя с другой стороны довольно интересно может подкинете ссылочку на место где рассказывается про работу с CFormView, а то мне какие то бессвязные обрывки все попадаются? |
| Автор: ano360 4.5.2009, 19:17 |
| Сделал как вы сказали Да. надо свойство Style в PopUp. Нашел что при нажатии File->New вызывается CWinApp::OnFileNew и видимо она и создает новое Сhild окно Допустим. Но где в данном проекте код создающий child окно появляющается сразу при старте приложения....Я уже голову сломал... |
| Автор: ano360 4.5.2009, 20:18 |
| Сгорем пополам заработало... Материал брал отсюда:http://forum.sources.ru/index.php?act=ST&f=4&t=49952 Хотя понимания производимых действий как не было так и нет... Да и результат ожидался немного другой. Можно например сделать чтобы не было бордюра(ступеньки такой) по краям Child ? И по прежнему стоит открытым вопрос где же всетаки код создающий новое Child окно |
| Автор: Earnest 5.5.2009, 08:35 | ||
Проще всего изучать код с помощью дебагера. Окна стандартно создаются в шаблоне документа - что-то вроде CreateNewFrame. Ставишь туда точку прерывания и смотришь по стеку, откуда вызов пришел. |
| Автор: ano360 5.5.2009, 12:48 | ||
| Нашел. спасибо за подсказку. брейкпоинтами я уже давно пользуюсь а вот про стек ничего не знал. выяснилось что создание первого Child окна происходит при работе кода:
закоментировал этот код. вроде все теперь работает правильно.... однако слижком уж странный код. Не оключил ли я еще что-нибудь важное вместе с этим? |
| Автор: Earnest 5.5.2009, 16:04 | ||
| Этот код обрабатывает аргументы командной строки и может тебе понадобиться. Вроде там по умолчанию есть код, который, если не просят открыть документ, создает новый. Вроде здесь (конструктор CCommandLineInfo). Видишь, инициализируется командой FileNew.
Достаточно убрать (заменить FileNothing) и не будет ничего создаваться. |
| Автор: ano360 7.5.2009, 21:11 | ||
сделал так и теперь все как нужно:
я уж не стал вмешиваться в исходники.... P.S. Большое вам спасибо за помощ |
| Автор: Earnest 8.5.2009, 08:19 |
| Я это и имела в виду, а не вмешательство в исходники. Можно еще ParseCommandLine переопределить, чтобы не засорять код деталями. |