




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在单文档程序中动态切换多个窗体 VC 文档中心 源码天空 新建一个基于CFormView的单文档应用程序 再添加一个窗 体和与之对应的基于CFormView的新视类 然后通过在主框 架类里添加控制代码和菜单控制实现这两个窗体的动态切 换 下面就是具体的实现过程 一 用 MFC AppWizard exe 建立一个新项目 SwitchForm 并在第二步 的创建类型上选择为 Single documnet 单文档模式 第三 四 五 六步均取确省状态 最 后一步选择 CFormView 作为视类的基类 点按 完成 按钮 生成了初始工程 SwitchForm 二 点选菜单 Insert Resource 在弹出的 Insert Resource 对话框中 Dialog 树里的 IDD FORMVIEW 点击 New 按钮 生成了一个新的窗体 将其ID号改为 IDD NEX TFORM 在原有的窗体上加一个静态框 这是第一个窗体 在新建的窗体上也添加一个静态框 这是第二个窗体 三 在菜单资源的 IDR MAINFRAME 上添加一级菜单 窗体切 换 及其二级菜单 第一个窗体 第二个窗体 其标识号 分别为 ID FIRSTFORM 和 ID SECONDFORM 修该 第 一个窗体 的属性为 Checked 表明程序初始时显示的是第 一个窗体 四 在 ClassView 属性页里的 SwitchForm classes 上右键 在弹出菜单上选择 New Class 弹出 New Class 对话框 选择 Dialog ID 为我们刚添加的新窗体 IDD NEXTFORM 选择 Base class 为 CFormView 类名取为 CNextFormView 这样就 把第二个窗体对应的视图类添加到了工程 五 在框架类里添加函数SwitchToForm void CMainFrame SwitchToForm int nForm 获取原来的活动窗体的视图句柄 CView pOldActiveView GetActiveView 获取由 nForm 标识的窗体所对应的视图句柄 CView pNewActiveView CView GetDlgItem nForm 若视图句柄为空 则创建一新的 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 CFrameWnd rectDefault this nForm context pNewActiveView OnInitialUpdate 选择pNewActiveView为活动窗体 SetActiveView pNewActiveView 显示活动窗体 隐藏非活动窗体 pNewActiveView ShowWindow SW SHOW pOldActiveView ShowWindow SW HIDE int ID if pOldActiveView GetRuntimeClass RUNTIME CLASS CSwitchFormView ID IDD SWITCHFORM FORM if pOldActiveView GetRuntimeClass RUNTIME CLASS CNextFormView ID IDD NEXTFORM 设置窗体的ID号 pOldActiveView SetDlgCtrlID ID pNewActiveView SetDlgCtrlID AFX IDW PANE FIRST RecalcLayout 六 添加两个菜单相对应的命令响应函数和更新函数如下 void CMainFrame OnFirstform 通过IsKindOf函数确定当前活动窗口是否是第一个窗口 如 是 则无须切换 否则将通过SwitchToForm函数将当前活动窗口切换到 IDD SWITCHFORM FORM 标识的第二个窗体 if GetActiveView IsKindOf RUNTIME CLASS CSwitchFormView return SwitchToForm IDD SWITCHFORM FORM void CMainFrame OnUpdateFirstform CCmdUI pCmdUI 通过IsKindOf函数判断当前活动窗口是否是第一个窗体 如 是则将其选中 pCmdUI 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 CNextFormView 然后再在该文件开始处添加对两个视图类的引用 include SwitchFormDoc h include SwitchFormView h include NextFormView h 在此须注意 应在两个视类的引用之前添加对文档类的引用 否则会引起编译错误 另外 由于视 类的构造函数在声明时都确省的声明为保护型的 在框架类 中无法引用 所以还要将两个视类的类 声明改动如下 class CNextFormView public CFormView DECLARE DYNCREATE CNextFormView protected 将 protected 改为 public public CNextFormView virtual CN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 8.2.5 生物的变异 说课稿-2025-2026学年鲁科版(五四学制)生物八年级下册
- Chapter1 Study tours教学设计-2025-2026学年小学英语6B香港朗文版
- 第三节 DNA通过复制传递遗传信息教学设计-2025-2026学年高中生物浙科版2019必修2 遗传与进化-浙科版2019
- 十六 项脊轩志教学设计-2025-2026学年高中语文高一下册华东师大版
- 2025年中考数学试题分类汇编:圆的有关位置关系(9大考点51题) (第1期)解析版
- 2025年采购与供应链管理岗位职业技能资格知识考试题与答案
- 1.3地球的历史教学设计2023-2024学年高中地理人教版(2019)必修第一册
- 2025年体育学科专业知识教师招聘考试押题卷及答案(一)
- 一年级语文上册 第7单元 课文3 11 项链说课稿 新人教版
- 蓄水池防溺水知识培训课件
- 物业客服管理知识培训课件
- 2025-2026学年湘教版(2024)初中数学八年级上册教学计划及进度表
- GB/T 45763-2025精细陶瓷陶瓷薄板室温弯曲强度试验方法三点弯曲或四点弯曲法
- 【MOOC】理解马克思-南京大学 中国大学慕课MOOC答案
- 夏商周考古课件 第1章 绪论
- GB/T 23723.1-2009起重机安全使用第1部分:总则
- 《汽车发动机检修》课程标准
- GB308-2002滚动轴承钢球
- 夹芯彩钢复合板吊顶施工方案
- 高二物理培优计划
- 初中英语阅读理解100篇
评论
0/150
提交评论