MFC多文档程序启动时一个文档创建两个视图

1.在App类中创建两个public变量:

CMultiDocTemplate * m_pDocTemplate;

CMultiDocTemplate * m_pNewDocTemplate;

2.在App类中的Initlnstance()函数中添加以后程序:

m_pDocTemplate = new CMultiDocTemplate(
  IDR_MULTIDTYPE,
  RUNTIME_CLASS(CMultiDocumentStudyDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(CMultiDocumentStudyView));
 AddDocTemplate(m_pDocTemplate);

 //CMultiDocTemplate * pNewDocTemplate;
 m_pNewDocTemplate = new CMultiDocTemplate(
  IDR_MULTIDTYPE,
  RUNTIME_CLASS(CMultiDocumentStudyDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(CNewView));
 AddDocTemplate(m_pNewDocTemplate);
3.重载OnFileNew函数(App类中),默认只打开一个视图:

m_pDocTemplate->OpenDocumentFile(NULL);

4.在Doc类中重载OnNewDocument()函数

 CMultiDocumentStudyApp*p_app = (CMultiDocumentStudyApp*)AfxGetApp();
 EkCreateNewWindow(p_app->m_pNewDocTemplate, this ); 

 

CFrameWnd* CMultiDocumentStudyDoc::EkCreateNewWindow( CDocTemplate* pTemplate,CDocument* pDocument )
{
 ASSERT_VALID( pTemplate );   
    ASSERT_VALID( pDocument );   
    CFrameWnd* pFrame =    
  pTemplate->CreateNewFrame(pDocument, NULL ); 
 CRect rect;
 GetClientRect(pFrame->m_hWnd,&rect);
 pFrame->MoveWindow(100,150,rect.Width(),rect.Height());
    if( pFrame == NULL )   
    {TRACE0( "Warning: failed to create new frame.\n" );   
    return NULL;   
    }   
    ASSERT_KINDOF( CFrameWnd, pFrame );   
    pTemplate->InitialUpdateFrame( pFrame, pDocument );   
 
    return pFrame;  

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值