FAQ по C/C++/Visual C++
Работа с сетью Создание еще одного фрейма для документа |
Составители: SUnteXx, Leprecon |
Создание еще одного фрейма для документа | |||
class CMyApp : public CWinApp { ....... // document templates public: CMultiDocTemplate* m_pDocTemplate1; CMultiDocTemplate* m_pDocTemplate2; ....... };Тогда при создании, каждый шаблон запоминается в соответствующей переменной: BOOL CMyApp::InitInstance() { ........... m_pDocTemplate1 = new CMultiDocTemplate( IDR_FRAME2TYPE, RUNTIME_CLASS(CMyDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CMyView1)); AddDocTemplate(m_pDocTemplate1); m_pDocTemplate2 = new CMultiDocTemplate( IDR_FRAME2TYPE, RUNTIME_CLASS(CMyDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CMyView2)); AddDocTemplate(m_pDocTemplate2); ........... }После этого создать еще один фрейм для документа проще простого: void CChildFrame::OnNewFrame() { CMyApp* pApp = (CFrame2App*) AfxGetApp(); CFrameWnd* pFrame = pApp->m_pDocTemplate1->CreateNewFrame(GetActiveDocument(), this); pFrame->ShowWindow(SW_SHOW); }Если есть какие-то замечания, предложения или что-то еще, то пишите: leprecon@pisem.net. |
Бывает так, что одного фрейма для документа в MDI приложении недостаточно. Например если нужно отобразить один и тот же документ двумя разными видами. Лучше всего для этого создать еще один шаблон документа, в котором указать другой класс вида или класс внутреннего фрейма. Делается это в функции BOOL CWinApp::InitInstance(). Очень удобно завести для всех шаблоноб документов переменные в классе приложения: |||
|
FAQ составлен по материалам Форума на Исходниках.Ру. Copyright © 2002 by Sources.ru. All rights reserved. |