




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿山汽车考试题及答案
- 殡仪馆考试题及答案
- 航向操作考试题及答案
- 上虞招聘面试题及答案
- 非遗智慧:孩子学艺诀窍
- 2020-2025年BIM工程师之BIM工程师高分通关题库A4可打印版
- 2025年注册消防工程师之消防技术综合能力通关提分题库(考点梳理)
- 1.1菱形的性质与判定第2课时(教学课件)数学北师大版九年级上册
- 保安防恐防暴培训知识课件
- 保安知识培训资料内容课件
- 切削刀具项目实施方案
- 常见行政案件笔录模版
- 手术室甲状腺切除术手术配合护理查房
- 国家电网电力中级职称考试题
- 美国专利法及实务培训-上传课件
- 新版中国电信员工手册
- 2023年中国工商银行软件开发中心春季校园招聘500人笔试模拟试题及答案解析
- D500-D505 2016年合订本防雷与接地图集
- 中国重症加强治疗病房(ICU)建设与管理指南
- 社区矫正法课件
- 后勤保障楼幕墙施工方案新
评论
0/150
提交评论