void AddView( CView* pView );
Параметры
pView
Указатель на добавляемый просмотр.
Замечания
Вызовите эту функцию, чтобы прикрепить просмотр к документу. Эта функция добавляет определенный просмотр к списку просмотров, связанных с документом; функция также устанавливает указатель документа просмотра на этот документ. Рамка вызывает эту функцию при приложении недавно созданного объекта просмотра к документу; это происходит в ответ на File New, File Open, или New Window команды, или когда окно расщепляется.
Вызовите эту функцию только, если Вы вручную создаете и прикрепляете просмотр. Обычно Вы позволите рамке подключать документы и просмотры, определяя объект CDocTemplate, чтобы сопоставить класс документа, просматривать класс, и класс рамочного окна.
Пример
// Следующий пример переключает два просмотра в SDI (одиночный документ // интерфейс) рамочное окно. Решение проекта должно быть сделано относительно // оставлять ли неактивный просмотр, связанный с документом, // так, что неактивный просмотр продолжает получать OnUpdate // сообщения из документа. Это обычно связано с желанием // хранить неактивный просмотр непрерывно с документом, даже // хотя это неактивно. Однако, выполнение так подвергается стоимостью эффективности, // также как стоимость программирования выполнения OnUpdate подсказки. // Это может быть менее дорого, в терминах эффективности и программирования, // Этот пример иллюстрирует этот последний подход, // пересоединение недавно активного просмотра и разъединения недавно // неактивного просмотра, через обращения к CDocument::AddView и RemoveView BOOL CMainFrame::OnViewChange(UINT nCmdID) { CView* pViewAdd; CView* pViewRemove; CDocument* pDoc = GetActiveDocument(); UINT nCmdID; nCmdID = LOWORD(GetCurrentMessage()->wParam); if((nCmdID == ID_VIEW_VIEW1) && (m_currentView == 1)) return; if((nCmdID == ID_VIEW_VIEW2) && (m_currentView == 2)) return; if (nCmdID == ID_VIEW_VIEW2) { if (m_pView2 == NULL) { m_pView1 = GetActiveView(); m_pView2 = new CMyView2; // Обратить внимание, что, если OnSize был перегружен в CMyView2 // и GetDocument () используется в этой перегрузке, это может // причиной ошибки, если ошибка игнорируются, // вызыветься нарушение доступа. m_pView2->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, rectDefault, this, AFX_IDW_PANE_FIRST + 1, NULL); } pViewAdd = m_pView2; pViewRemove = m_pView1; m_currentView= 2; } else { pViewAdd = m_pView1; pViewRemove = m_pView2; m_currentView= 1; } // Установить порожденный i.d. Из активного просмотра к AFX_IDW_PANE_FIRST, // Так, чтобы CFrameWnd::RecalcLayout распределил этому // " Первая область окна " что часть клиентской области рамочного окна // Не распределенный, чтобы управлять областями. Установите порожденный i.d. Из // Другой просмотр к чему - нибудь другому чем AFX_IDW_PANE_FIRST; // Примеры включают порожденный идентификатор из двух просмотров. int nSwitchChildID = pViewAdd->GetDlgCtrlID(); pViewAdd->SetDlgCtrlID(AFX_IDW_PANE_FIRST); pViewRemove->SetDlgCtrlID(nSwitchChildID); // Покажите недавно активный просмотр, и скройте неактивный просмотр. pViewAdd->ShowWindow(SW_SHOW); pViewRemove->ShowWindow(SW_HIDE); // Подключить недавно активный просмотр с документом, и // отсоединяет неактивный просмотр. pDoc->AddView(pViewAdd); pDoc->RemoveView(pViewRemove); SetActiveView(pViewAdd); RecalcLayout(); }