MFC: SDI - 2 дока одновременно (один зависит от другого) как реализировать?

MatriXakep 31.03.2004 - 16:09 | Есть такой проект - он должен быть оформлен в SDI виде , но отображать 2 разных документа одновременно в одном окне. Я сделал следующее: создал по 2 наследванных классов для каждого типа дока: 2 представления, фрейма, документа. //1-ый док СFrame1 CView1 CDoc1 //2 док СFrame2 CView2 CDoc2 И класс - главное окно приложения: CMainFrame. Добавляю шаблоны доков: pDocTemplate = new CSingleDocTemplate( IDR_FRAME1, RUNTIME_CLASS(CDoc1), RUNTIME_CLASS(CFrame1), RUNTIME_CLASS(CView1)); AddDocTemplate(pDocTemplate); pDocTemplate = new CSingleDocTemplate( IDR_FRAME2, RUNTIME_CLASS(CDoc2), RUNTIME_CLASS(CFrame2), RUNTIME_CLASS(CView2)); AddDocTemplate(pDocTemplate); Создаю главное окно приложения: CMainFrame* pMainWnd = new CMainFrame; if(!pMainWnd->LoadFrame(IDR_MAINFRAME)) return FALSE; m_pMainWnd = pMainWnd; m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); Главное окно имеет разделитель: BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { if(m_wndSplitter.CreateStatic(this,2,1)) { if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CFrame1),CSize(300,300),&cc)) return FALSE; if(!m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CFrame2),CSize(300,300),&cc)) return FALSE; } return CFrameWnd::OnCreateClient(lpcs, pContext); } Я передаю не тот контекст создания (CCreateContext)/ Как нужно передать контекст из зарегистированных шаблонов доков? Можно написать CCreateContext cc; cc.m_pCurrentDoc =(CDocument*) new CDoc1; cc.m_pNewViewClass = RUNTIME_CLASS(CView1); m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CFrame1),CSize(300,300),&cc)ж Но это уже не то и окна создаются не в том месте. КОРОЧЕ - КАК НУЖНО ПРАВИЛЬНО РЕАЛИЗИРОВАТЬ ЭТО? Помните это не MDI!!!1 А SDI! 2 дока одновременно (один док зависит от другого) ------------------------------------------------------------------------------------------------------------------------------------------ Спасибо.
MatriXakep 1 - 01.04.2004 - 20:27 | Никто не сталкивался?
MatriXakep 2 - 03.04.2004 - 23:29 | Или не поняли проблему?
UE 3 - 05.04.2004 - 11:31 | Я правильно понял, что тебе надо иметь два типа документов (связанных друг с другом), но одно представление? Имхо, это немного не укладывается в архитектуру "документ-представление". Придется, наверное, все-таки одним классом документа обойтись...
MatriXakep 4 - 05.04.2004 - 16:47 | нет, представлений 3 (в одном 2, в другом 1) А вообще можно ли сделать с одним доком? обрабатывать сообщения сам а не отдавать ему MFC (новый,открыть,сохранить)???
MatriXakep 5 - 05.04.2004 - 16:48 | Значить вывод: 3 вида - и 1 документ. %)))
UE 6 - 05.04.2004 - 17:01 | Надо постараться влезть в стандартный подход. А перхватывать, обрабатывать - это, конечно, можно, но мне кажется, что ты потратишь кучу нервов и сил на это. Еще вариант: вообще отказаться от document-view архитектуры. От MFC отказываться при этом необязательно ;)

>>