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();
}