C ++ MFC MDI меняет дочерние переменные окна при создании

У меня есть приложение MDI, где диалог вызывается, когда OnFileNew() функция (обрабатывается theApp объект) называется. Этот диалог позволяет пользователю устанавливать значения для некоторых переменных, которые затем должны быть переданы CChildFrame объект, который создается, когда ->CreateNewChild() функция называется.

Как передать эти переменные на CChildFrame объект, который создается ->CreateNewChild() функционировать?

РЕДАКТИРОВАТЬ:
В ответ на полученный ответ приведу результаты использования ->Create() против ->CreateNewChild(),

Ссылка на сайт: CMainFrame *pFrame;pFrame->CreateNewChild()

Ссылка на сайт: CChildFrame *childFrame;childFrame->Create()

Как получить окна с вкладками, показанные в первой ссылке, с описаниями функций, описанными во второй ссылке?

0

Решение

Вы можете передать данные через настроенный шаблон документа. Извлеките класс из CMultiDocTemplate, чтобы добавить дополнительные элементы данных, затем добавьте указатель на класс шаблона производного документа в класс приложения, производный от CWinApp. Инициализируйте шаблон вашего документа обычным способом, за исключением того, что, когда вы закончите, сохраните новый объект шаблона документа в указатель в вашем классе приложения.

Теперь в вашей функции CreateNewChild вместо вызова CWinApp :: OnFileNew вы можете просто получить данные из текущего фрейма, а затем назначить элемент данных в шаблоне документа, сохраненном в классе приложения, перед вызовом OpenDocumentFile (NULL). Вы можете очистить элементы данных, когда OpenDocumentFile вернется.

Шаблон документа, в свою очередь, создаст дочерний фрейм и передаст шаблон документа в контексте создания. Чтобы получить контекст создания в дочернем фрейме, вы можете либо переопределить CChildFrame :: OnCreateClient, либо прочитать структуру create в OnCreate:

MDICREATESTRUCT * pMDICreateStruct=(MDICREATESTRUCT * )lpCreateStruct->lpCreateParams;
CCreateContext *pCreateContext=(CCreateContext *)pMDICreateStruct->lParam;

Вместо передачи данных инициализации в шаблон документа, вы также можете передать данные в новый документ. В основном вы скопируете код из CMultiDocTemplate :: OpenDocumentFile и добавите код, чтобы получить данные инициализации из активного документа основного фрейма.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]