已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于MDI和CFormView框架的多视图开发实例1. 打开VC+6.0 利用向导建立一个MFC AppWizard (exe)项目,取名MDIx.下一个页面选择Multiple Documents(MDI),向导最后一个页面的View类的Base Class选CformView类2. Resource管理器中选择向导默认生成的Dialog:IDD_MDIX_FORM,Ctrl+C 然后Ctrl+V复制生成一个新得Dialog,ID设为IDD_SUB_FORM.3. Ctrl+W打开Class Wizard,为IDD_SUB_FORM 创建一个类CsubForm,Base Class选CFormView.(向导默认为IDD_MDIX_FORM生成了CMDIxView类,基类也是CFormView)4. 打开Resource管理器,打开Menu选择IDR_MAINFRAME,添加一个Pop-up子菜单,名字设为“窗口”,菜单项为IDM_WINDOW_SUB,名称为“Main窗口”,IDM_WINDOW_MAIN,名称为“Main窗口”5. 选择IDM_WINDOW_SUB,Ctrl+W打开Class Wizard.在CMainFrame类中为IDM_WINDOW_SUB和IDM_WINDOW_MAIN分别添加COMMAND和UPDATE_COMMAND_UI命令的消息响应函数:OnWindowSub(),OnUpdateWindowSub(CCmdUI* pCmdUI),OnWindowMain(),OnUpdateWindowMain(CCmdUI* pCmdUI)。6. 在CmainFrame类中添加两个public指针变量:public:CChildFrame * m_subWindow;CChildFrame * m_mainWindow;7. 在CmainFrame的构造函数中把m_subWindow和m_mainWindow初始化为NULL;m_subWindow=NULL;m_mainWindow=NULL;8. 在MainFrm.h中加入#include ChildFrm.h#include MDIxDoc.h#include MDIxView.h#include SubForm.h9. 在OnWindowSub()中加入:if (m_subWindow!= NULL & m_subWindow -GetSafeHwnd() != NULL)m_subWindow -MDIActivate();return;elseCCreateContext context;context.m_pNewViewClass = RUNTIME_CLASS(CSubForm);m_subWindow = new CChildFrame();m_subWindow -LoadFrame(IDR_MAINFRAME,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context);m_subWindow -ShowWindow(SW_SHOWMAXIMIZED);/设置主窗口标题m_subWindow -GetParentFrame()-SetWindowText(“sub窗口”);m_subWindow -InitialUpdateFrame(NULL,true);return;10. 在OnWindowMain ()中加入:i / TODO: Add your command handler code hereif(m_mainWindow!=NULL)m_mainWindow-MDIActivate();return;elseCCreateContext context;context.m_pNewViewClass=RUNTIME_CLASS(CMDIxView);m_mainWindow=new CChildFrame;m_mainWindow-LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW|WS_MAXIMIZE,this,&context);m_mainWindow-ShowWindow(SW_SHOWMAXIMIZED);m_mainWindow-GetParentFrame()-SetWindowText(Main Window);m_mainWindow-InitialUpdateFrame(NULL,true);11. 在OnUpdateWindowSub(CCmdUI* pCmdUI)中加入:if(GetActiveFrame()!=this)if(GetActiveFrame()-GetActiveView()if(GetActiveFrame()-GetActiveView()-IsKindOf(RUNTIME_CLASS(CSubForm)pCmdUI-Enable(FALSE);elsepCmdUI-Enable();12. 在OnUpdateWindowMain(CCmdUI* pCmdUI)中加入:if(GetActiveFrame()!=this)if(GetActiveFrame()-GetActiveView()if(GetActiveFrame()-GetActiveView()-IsKindOf(RUNTIME_CLASS(CMDIxView)pCmdUI-Enable(FALSE);elsepCmdUI-Enable();13. 在ChildFrm.h中添加#include MainFrm.h14. 在CchildFrame类中增加WM_CLOSE消息响应函数:void CChildFrame:OnClose()并添加代码:if(this=(CMainFrame *)AfxGetMainWnd()-m_subWindow)(CMainFrame *)AfxGetMainWnd()-m_subWindow =NULL;if(this=(CMainFrame *)AfxGetMainWnd()-m_mainWindow)(CMainFrame *)AfxGetMainWnd()-m_mainWindow =NULL;/子窗口关闭后,销毁指向本子窗口的指针15. 在CChildFrame:PreCreateWindow(CREATESTRUCT& cs)中添加/窗口的创建样式cs.style = WS_CHILD|WS_VISIBLE|WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|/FWS_ADDTOTITLE|/WS_THICKFRAME|/WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_MAXIMIZE;16. 在BOOL CMDIxApp:InitInstance()中修改:pMainFrame-ShowWindow(SW_SHOWMAXIMIZED);16. 可以在主程序BOOL CMDIxApp:InitInstance()中删除以下代码,以便程序初始化时不打开任何视图。CMultiDocTemplate* pDocTemplate;pDocTemplate = new CMultiDocTemplate
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋装修返工协议书
- 房屋赠予赡养协议书
- 房屋逾期补偿协议书
- 房源出售委托协议书
- 房租收益写合同范本
- 房间出售间合同范本
- 手写保密协议书模板
- 手术麻醉签约协议书
- 手机店保安合同协议
- 才艺主持人合同范本
- 个人简历模板(空白简历表格)
- 新生儿重度窒息亚低温个案
- 华中科技大学2004年422无机化学考研真题
- 果树改造项目实施方案范本
- TB10443-2016铁路建设项目资料管理规程
- 胫骨高位截骨术课件
- 机械用无缝碳钢管合金钢管的标准规范
- GB/T 19837-2005城市给排水紫外线消毒设备
- GB/T 17257.2-2009集尿袋第2部分:要求和检验方法
- GB/T 120.2-2000内螺纹圆柱销淬硬钢和马氏体不锈钢
- 支气管哮喘诊疗指南
评论
0/150
提交评论