Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
1

MFC изменить родительский фрейм для созданной MDI вкладки

02.11.2023, 16:16. Показов 3694. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!

При доработке MFC приложения требуется транслировать вновь открытый документ не в главном фрейме приложения, а в другой дочерней вкладке.
Мои действия:

1) Создаю новое дочернее окно при клике пользовательской кнопки (Просмотр) из меню приложения:
C++
1
2
CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);           // указатель на класс рамки
m_newCMDIChildWnd = pFrame->CreateNewChild(RUNTIME_CLASS(CMDIChildWnd), IDD_DIALOG_PREVIEW, NULL, NULL);    // создать окно
2) В этой же функции создаю шаблон пользуясь своим классом, наследующем от CMultiDocTemplate:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//MyDocTemplate : public CMultiDocTemplate  
 
m_pDocTemplate = new MyDocTemplate(
        IDR_PEAK_EXPERT_CHILD_FRAME,
        RUNTIME_CLASS(CMMyDocument),
        RUNTIME_CLASS(CMMyFrame), // custom MDI child frame
        RUNTIME_CLASS(CMMyView));
 
// CWnd* m_pParent - расположен в *.h - файле, хотелось бы его задать как родителя для созданного документа
m_pDocTemplate->m_pParent = m_newCMDIChildWnd; 
 
// Открываю документ
m_pDocTemplate->OpenDocumentFile(NULL);
3) Далее рассчитываю в функции CMMyFrame::Initialize задать созданную дочернюю вкладку как родительскую
C++
1
2
3
// для CMMyFrame есть своя переменная m_pParent, которая инициализируется перед функцией CMMyFrame::Initialize
    if (m_pParent != nullptr)
        SetParent(m_pParent );
В начале всё получается, а потом происходит ошибка и приложение закрывается. Ошибка происходит в библиотечной функции
CMDIFrameWnd* CMDIChildWnd::GetMDIFrame() на строке ASSERT_KINDOF(CMDIFrameWnd, pMDIFrame). Комментарий перед функцией GetMDIFrame: // walk up two parents for MDIFrame that owns MDIChild (skip MDIClient)

В общем не понятно, толи я совсем что-то невыполнимое хочу, но скорее проблема в задании родительского фрейма. Подскажите пожалуйста, что делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2023, 16:16
Ответы с готовыми решениями:

Как для созданной таблицы изменить тип столбца
Где можно изменить тип данных таблицы в IBConsole

Не удается изменить материал для созданной модели ANSYS Workbench
У готовой модели не удается изменить материал со стали на алюминий. На скриншоте в закрепе видно,...

VC 6, MFC Webbrowser не грузит страницу во фрейм
Здравствуйте. Проблема в следующем. Есть HTML страница с фреймами со следующей структурой...

MDI на MFC
Не понимаю в чем проблема, передираю с книг - не пашет, передираю с проекста созданного визардом -...

0
02.11.2023, 16:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2023, 16:16
Помогаю со студенческими работами здесь

MFC MDI сериализация
у меня в проекте MFC MDI 2 файла с заданиями и для каждого отдельная сериализация. 1 файл сохраняет...

MFC-MDI вызов СтатусБара
Пишу приложение на MFC с MDI-интерфейсом. Есть СтатусБар. Как вызвать статус бар из документа,...

MFC MDI обход детей
У меня такой вопрос, как можно пройтись по всем ChildFrame'ам? Мне, например, нужно пройтись по...

Вкладки в MDI форме
Добрый день. Есть Mdi форма с дочерними формами. Хочу сделать в MDI форме вкладки, при помощи...

MFC - MDI - убрать лишние элементы
Привет, пишу софт на MFC - MDI - там есть для документов Таб-вкладки. Можно ли элементы крестик и...

MFC-MDI - запрет перетаскивание документов
Привет. Мне необходимо в MDI-интерфейсе запретить возможность перетаскивать документ цепляя за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru