版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在单文档程序中动态切换多个窗体-界面类编程-VC摘要:本文通过一个程序实例描述了在VC+6.0下如何在单文档程序中通过菜单动态控制多 个窗体的切换。 一、 引言 我们在编制程序中根据需求的不同会在程序风格上选择多文档、单文档或是对话框模式 ,对于单文档模式可能是我们使用比较多的,但有时我们想采用单文档的形式显示多个不同 的窗体,如作为数据库前台应用程序就会遇到此类问题,数据库由大量的表单组成,而同常 一个窗体内只用来显示一个表单,所以要显示其他的表单时就要用到切换窗体的技术了,下 面就通过一个程序说明该技术的实现方法。 二、 实现技术 新建一个基于CFormView的单文档应用程序,再添加一个
2、窗体和与之对应的基于 CFormView的新视类,然后通过在主框架类里添加控制代码和菜单控制实现这两个窗体的动态 切换,下面就是具体的实现过程: (一) 用MFC AppWizard(exe)建立一个新项目SwitchForm,并在第二步的创建类型上选 择为Single documnet单文档模式,第三、四、五、六步均取确省状态,最后一步选择 CFormView作为视类的基类。点按完成按钮,生成了初始工程SwitchForm。 (二) 点选菜单Insert、Resource,在弹出的Insert Resource对话框中Dialog树 里的IDD_FORMVIEW,点击New按钮,生成了一个新
3、的窗体,将其ID号改为IDD_NEXTFORM。 在原有的窗体上加一个静态框这是第一个窗体;在新建的窗体上也添加一个静态框这是第二 个窗体。 (三) 在菜单资源的IDR_MAINFRAME上添加一级菜单窗体切换,及其二级菜单第一个窗 体、第二个窗体,其标识号分别为ID_FIRSTFORM和ID_SECONDFORM。修该第一个窗体 的属性为Checked,表明程序初始时显示的是第一个窗体。 (四) 在ClassView属性页里的SwitchForm classes上右键,在弹出菜单上选择 New Class,弹出New Class对话框,选择Dialog ID:为我们刚添加的新窗体 IDD_N
4、EXTFORM,选择Base class:为CFormView,类名取为CNextFormView,这样就把第 二个窗体对应的视图类添加到了工程。 (五) 在框架类里添加函数SwitchToForm(): void CMainFrame:SwitchToForm(int nForm) file:/获取原来的活动窗体的视图句柄 CView* pOldActiveView = GetActiveView(); file:/获取由nForm标识的窗体所对应的视图句柄 CView* pNewActiveView = (CView*) GetDlgItem(nForm); file:/若视图句柄为空,则
5、创建一新的。 if (pNewActiveView = NULL) if (nForm = IDD_SWITCHFORM_FORM) pNewActiveView = (CView*)new CSwitchFormView; if (nForm = IDD_NEXTFORM) pNewActiveView = (CView*)new CNextFormView; CCreateContext context; context.m_pCurrentDoc = pOldActiveView-GetDocument(); pNewActiveView-Create(NULL,NULL,0L, CFr
6、ameWnd:rectDefault, this,nForm,&context); pNewActiveView-OnInitialUpdate(); file:/选择pNewActiveView为活动窗体 SetActiveView(pNewActiveView); file:/显示活动窗体,隐藏非活动窗体 pNewActiveView-ShowWindow(SW_SHOW); pOldActiveView-ShowWindow(SW_HIDE); int ID; if(pOldActiveView-GetRuntimeClass() = RUNTIME_CLASS(CSwitchFormV
7、iew) ID=IDD_SWITCHFORM_FORM; if(pOldActiveView-GetRuntimeClass() = RUNTIME_CLASS(CNextFormView) ID=IDD_NEXTFORM; file:/设置窗体的ID号 pOldActiveView-SetDlgCtrlID(ID); pNewActiveView-SetDlgCtrlID(AFX_IDW_PANE_FIRST); RecalcLayout(); (六)添加两个菜单相对应的命令响应函数和更新函数如下: void CMainFrame:OnFirstform() file:/通过IsKindOf
8、函数确定当前活动窗口是否是第一个窗口,如是,则无须切换, file:/否则将通过SwitchToForm函数将当前活动窗口切换到IDD_SWITCHFORM_FORM file:/标识的第二个窗体。 if (GetActiveView()-IsKindOf(RUNTIME_CLASS(CSwitchFormView) return; SwitchToForm(IDD_SWITCHFORM_FORM); void CMainFrame:OnUpdateFirstform(CCmdUI* pCmdUI) file:/通过IsKindOf函数判断当前活动窗口是否是第一个窗体,如是则将其选中。 pCm
9、dUI-SetCheck(GetActiveView()-IsKindOf(RUNTIME_CLASS(CSwitchFormView); void CMainFrame:OnSecondform() if (GetActiveView()-IsKindOf(RUNTIME_CLASS(CNextFormView) return; SwitchToForm(IDD_NEXTFORM); void CMainFrame:OnUpdateSecondform(CCmdUI* pCmdUI) pCmdUI-SetCheck(GetActiveView()-IsKindOf(RUNTIME_CLASS
10、(CNextFormView); 然后再在该文件开始处添加对两个视图类的引用: #include SwitchFormDoc.h #include SwitchFormView.h #include NextFormView.h 在此须注意:应在两个视类的引用之前添加对文档类的引用,否则会引起编译错误。另外,由于视 类的构造函数在声明时都确省的声明为保护型的,在框架类中无法引用,所以还要将两个视类的类 声明改动如下: class CNextFormView : public CFormView public: file:/将protected 改为public. CNextFormView(); ; class CSwitchFormView : public CFormView public: file:/将protected 改为public
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铆工班组评比水平考核试卷含答案
- 康乐服务员安全专项能力考核试卷含答案
- 五年级下册语文学生练笔
- 八年级物理下册 6.3压力与压强(解析版)
- 2026银泰百货面试题目及答案
- 2026银行晋升面试题及答案
- 2026银行协理岗面试题及答案
- 2026印江社工面试题及答案
- 2026应急交安面试题及答案
- 2025年春季学期大学高等数学(上)期末考试试卷及答案详解与点评
- 2026年江苏省常州市电工证考试题模拟试题初级电工电工证考试题模拟试题(含答案)
- 第7课 神奇的世界 课件(内嵌视频)2026-2027学年道德与法治四年级上册统编版
- 2026中国智能智能工厂物流系统市场需求现状及投资评估规划分析研究
- 合理膳食养生科普
- 2026年麻醉药品、精神药品培训考核试题(附答案)
- 2026-2027学年教科版六年级上册科学第一单元《健康生活》单元素养测评卷含答案
- 【2026 版国资委15号文 穿透式监管内控检查全套工作底稿】
- 普通高中学业水平测试物理合格考公式及知识点总结
- 加油站安全重点部位及爆炸危险区域培训
- (一模)2025学年第一学期杭州市2026届高三年级教学质量检测 英语试卷(含标准答案)
- 【粤教版】三年级全一册《劳动与技术》第3单元 活动3 《做汤圆》 课件
评论
0/150
提交评论