




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司每年每月团建活动方案
- 公司直播运营策划方案
- 公司节电活动方案
- 2025年药学专业技术资格考试题及答案
- 2025年医学专业考生必做试题及答案
- 2025年文化产业管理专业考试试卷及答案
- 2025年文化遗产保护技师职业资格考试试题及答案
- 2025年数字营销与品牌策略课程考试试卷及答案
- 2025年思想政治教育专业考试试题及答案
- 2025年生态文明建设与管理考试卷及答案
- 特种设备使用安全风险日管控、周排查、月调度管理制度
- 建筑外墙清洗安全规范考核试卷
- 近年来被公开报道的起重大医院感染事件正式完整版
- 2024年山东省高中学业水平合格考生物试卷试题(含答案详解)
- 修理厂大修发动机保修合同
- 中国成人暴发性心肌炎诊断和治疗指南(2023版)解读
- 法庭科学 伪造人像 深度伪造检验
- 沙滩卫生清洁方案
- 人工智能设计伦理智慧树知到期末考试答案章节答案2024年浙江大学
- 电动轮椅车-标准
- MOOC 网络技术与应用-南京邮电大学 中国大学慕课答案
评论
0/150
提交评论