CDocument::AddView

void AddView ( CView * pView );

Parametreleri

pView

Puan eklenmekte görüntülemek için.

Açıklamalar

Bir belgeye iliştirmek için bu işlevini çağırın. Bu işlev belirtilen görünüm belgeyle ilişkili görünümler ekler; işlev, görünümün belge işaretçi bu belgeye de ayarlar. Çerçeve, yeni oluşturulan görünüm nesne belgeye eklerken bu işlevini çağırır; Bu yanıt dosyasını yeni, Dosya Aç veya yeni pencere komutunu veya kırık pencere ayrılmıştır oluşur.

Sadece eğer elle oluşturma ve görünüm bağlamak bu işlevini çağırın. Genellikle belge sınıfı, görüntüleme sınıfı ve kare pencere sınıfı için bir CDocTemplate nesnesi tanımlayarak belgeleri ve görünümleri bağlamak çerçevesinde izin verir.

Örnek

// The following example toggles two views in an SDI (single document
// interface) frame window. A design decision must be made as to
// whether to leave the inactive view connected to the document,
// such that the inactive view continues to receive OnUpdate
// notifications from the document. It is usually desirable to
// keep the inactive view continuously in sync with the document, even 
// though it is inactive. However, doing so incurs a performance cost,
// as well as the programming cost of implementing OnUpdate hints.
// It may be less expensive, in terms of performance and/or programming,
// to re-sync the inactive view with the document only with it is 
// reactivated. This example illustrates this latter approach, by 
// reconnecting the newly active view and disconnecting the newly 
// inactive view, via calls to CDocument::AddView and 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;

//Note that if OnSize has been overridden in CMyView2 
//and GetDocument() is used in this override it can 
//cause assertions and, if the assertions are ignored,
//cause access violation.
  
   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;
 }
     
// Set the child i.d. of the active view to AFX_IDW_PANE_FIRST,
// so that CFrameWnd::RecalcLayout will allocate to this 
// "first pane" that portion of   the frame window's client area 
// not allocated to control   bars.  Set the child i.d. of the 
// other view to anything other than AFX_IDW_PANE_FIRST; this
// examples switches the child id's of the two views.

 int nSwitchChildID = pViewAdd->GetDlgCtrlID();
 pViewAdd->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
 pViewRemove->SetDlgCtrlID(nSwitchChildID);

 // Show the newly active view and hide the inactive view.

 pViewAdd->ShowWindow(SW_SHOW);
 pViewRemove->ShowWindow(SW_HIDE);

 // Connect the newly active view to the document, and
 // disconnect the inactive view.
 pDoc->AddView(pViewAdd);
 pDoc->RemoveView(pViewRemove);

 SetActiveView(pViewAdd);
 RecalcLayout();
}

CDocument genel bakış |nbsp; Sınıf üyeleri | Hiyerarşi çizelgesi

Ayrıca bkz:nbsp;CDocTemplate, CDocument::GetFirstViewPosition, CDocument::Get&NextView, CDocument::RemoveView, CView::GetDocument

Index