在CMainFrame中创建MDI子窗体

1、首先创建一多文档程序;  
2、点击【Insert】,【New Form...】菜单项。  
  在Name中输入 CTemp1View  
  Base Class 选择 CFormView  
  其他不用动,点击“OK”按钮。  
3、点击【Insert】,【New Class...】菜单项。  
  Name: CTempFrm  
  Base class: CMDIChildWnd  
  点击“OK”按钮。  
4、在CXXXApp中添加   
  public:  
  CMultiDocTemplate * m_pTemplate;  
5、在CXXXApp中,修改 InitInstance() 的代码。  

  SetRegistryKey(_T( "Local AppWizard-Generated Applications "));  

LoadStdProfileSettings(); // Load standard INI file options (including MRU)  

// Register the application 's document templates. Document templates  
// serve as the connection between documents, frame windows and views.  

//CMultiDocTemplate* pDocTemplate; //注释掉  
//pDocTemplate = new CMultiDocTemplate( //注释掉  
  //添加自己的MDI子窗体  
m_pTemplate = new CMultiDocTemplate(  
IDR_XXXTYPE,//这里不变  
RUNTIME_CLASS(CXXXDoc),//这里不变  
RUNTIME_CLASS(CTempFrm), // 需要修改  
RUNTIME_CLASS(CTempView));//需要修改  
AddDocTemplate(m_pTemplate);  
  //如果还有其他窗体  
  m_pTemplate2 = new CMultiDocTemplate(  
IDR_XXXTYPE,//这里不变  
RUNTIME_CLASS(CXXXDoc),//这里不变  
RUNTIME_CLASS(CTemp2Frm), // 需要修改  
RUNTIME_CLASS(CTemp2View));//需要修改  
AddDocTemplate(m_pTemplate2);  
  m_pTemplate3 = new CMultiDocTemplate(  
IDR_XXXTYPE,//这里不变  
RUNTIME_CLASS(CXXXDoc),//这里不变  
RUNTIME_CLASS(CTemp3Frm), // 需要修改  
RUNTIME_CLASS(CTemp3View));//需要修改  
AddDocTemplate(m_pTemplate3);  
  ...  

// create main MDI Frame window  
CMainFrame* pMainFrame = new CMainFrame;  
if (!pMainFrame-> LoadFrame(IDR_MAINFRAME))  
return FALSE;  
m_pMainWnd = pMainFrame;  

5、调用子窗体  
  声明变量  
  protected:  
CTempFrm* m_pTempFrm;  
void CMainFrame::OnMenu1Click()   
{  
// 打开已有的框架窗口  
if(pTempFrm)  
MDIActivate (pTempFrm);  
else  
{  
//窗口没有打开,重新打开一个新的窗口  
CDocument *pDoc=((CFXXXApp *)AfxGetApp())-> m_pTemplate-> OpenDocumentFile(NULL);  
pDoc-> SetTitle( "Rovsky");  
//保存与新打开框架窗口指针  
m_pTempFrm= (CTempFrm*)MDIGetActive();  
}  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值