下面分析一个多文档实例的源码,看一下多文档界面的实现;

http://www.veryhuo.com/down/html/27693.html

VC++ 开发的多文档界面实例源程序
下载一个源码;

杀毒哈,有毒自己负责;

运行程序,界面如下;

看到多文档界面,不同子窗口上控件、内容都不同;分别是证书的申请(录入)、审核、制作;

不同子窗口上的不同控件,是用对话框资源实现的;

看它的对话框资源;对于证书的不同操作,都有对应对话框资源;

看对话框对应的类;

有的对话框对应的类是一个对话框类;这是将作为对话框弹出的;

下面带VIEW的三个对话框资源;

其对应的类是一个视类;

IMPLEMENT_DYNCREATE(CMadeCertView, CFormView)

CMadeCertView::CMadeCertView()
    : CFormView(CMadeCertView::IDD)
{

......

它们是从CFormView视类继承下来;

然后是在主框架CMainFrame,根据点击了不同的菜单,进行加载;代码如下;

void CMainFrame::OnInputUnit()
{// TODO: Add your command handler code herem_currentwin=1;//录入if(m_pInput!=NULL){m_pInput->MDIActivate();return;}m_pInput=new CRaChildFrame();CCreateContext context;context.m_pNewViewClass=RUNTIME_CLASS(CInputCertView);if(!m_pInput->LoadFrame(IDI_ICON3,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))return;m_pInput->ShowWindow(SW_SHOWMAXIMIZED);m_pInput->InitialUpdateFrame(NULL,true);}void CMainFrame::OnAuditingCert()
{// TODO: Add your command handler code herem_currentwin=2;//审核if(m_pAuditing!=NULL){m_pAuditing->MDIActivate();return;}m_pAuditing=new CRaChildFrame();CCreateContext context;context.m_pNewViewClass=RUNTIME_CLASS(CAuditingCertView);if(!m_pAuditing->LoadFrame(IDI_ICON4,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))return;m_pAuditing->ShowWindow(SW_SHOWMAXIMIZED);m_pAuditing->InitialUpdateFrame(NULL,true);}void CMainFrame::OnMadeMade()
{// TODO: Add your command handler code herem_currentwin=4;//制作if(m_pMade!=NULL){m_pMade->MDIActivate();return;}m_pMade=new CRaChildFrame();CCreateContext context;context.m_pNewViewClass=RUNTIME_CLASS(CMadeCertView);if(!m_pMade->LoadFrame(IDI_ICON5,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))return;m_pMade->ShowWindow(SW_SHOWMAXIMIZED);m_pMade->InitialUpdateFrame(NULL,true);}

以审核为例;

m_pAuditing=new CRaChildFrame();   生成一个子框架,指针为m_pAuditing;

CCreateContext context;

CCreateContext没有基类。
在主程序创建框架窗口、以及文档相关的视图时,会使用CCreateContext结构。建立窗口时,此结构中的值用于连接构成文档的组件和文档数据的视图。仅当覆盖了创建过程时才需要使用CCreateContext。
CCreateContext结构包含了指向文档、框架窗口和文档模板的指针,包括了一个CRuntimeClass指针,CRuntimeClass标志了待创建的视图的类型。运行时类信息和当前文档指针用于动态地创建视图。

context.m_pNewViewClass=RUNTIME_CLASS(CAuditingCertView);

设置运行时的视类为CAuditingCertView;

if(!m_pAuditing->LoadFrame(IDI_ICON4,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))
        return;

加载框架,第一个参数为图标,然后是窗口类型,初始最大化,

WS_OVERLAPPEDWINDOW是多种窗口类型的组合,包含层叠还有其他风格;

使用前面构造的context,这样就把视类加载到了子框架中;

m_pAuditing->ShowWindow(SW_SHOWMAXIMIZED);
    m_pAuditing->InitialUpdateFrame(NULL,true);

显示窗口;

控件是在对话框资源里添加的;

class CMainFrame : public CMDIFrameWnd
{
    DECLARE_DYNAMIC(CMainFrame)
public:
    CMainFrame();

// Attributes
public:
// Operations
public:
    CRaChildFrame *m_pInput,*m_pAuditing,*m_pMade;
    UINT m_currentwin;
    CImageList    m_imageList;

三个子框架指针是在主框架类的头文件里定义的;类型为public;

VC++多文档实例编程分析相关推荐

  1. VC++ 多文档模板(添加新文档模板)编程实例

    现在假设要做一个VC++多文档程序,一个文档类型处理txt文件,一个文档类型处理图片文件: 新加一个Img的文档模板类型: 先新建一个多文档工程,名为duodocDemo1: 在菜单选择 插入-类: ...

  2. 实例讲解如何绕过 Office 文档的反分析技术

    本文讲的是实例讲解如何绕过 Office 文档的反分析技术,今天我们来试着分析一个使用Word文档的恶意VBA项目.该文档的作者对文件中的VBA项目进行了密码保护,以防止对恶意代码的检查,同时也使用了 ...

  3. 多模态大模型时代下的文档图像智能分析与处理

    多模态大模型时代下的文档图像智能分析与处理 0. 前言 1. 人工智能发展历程 1.1 传统机器学习 1.2 深度学习 1.3 多模态大模型时代 2. CCIG 文档图像智能分析与处理论坛 2.1 文 ...

  4. 大咖齐聚CCIG论坛——文档图像智能分析的产业前沿

    目录 1 文档图像智能分析技术 2 大咖齐聚CCIG@2023 3 议题介绍 3.1 从模式识别到类脑研究 3.2 视觉-语言预训练模型演进及应用 3.3 篡改文本图像的生成和检测 3.4 智能文档处 ...

  5. 细粒度 文档图像版面分析

    基于实例分割网络的细粒度文档图像版面分析 英文引用:Zhao P, Wang W, Cai Z, et al. Accurate Fine-Grained Layout Analysis for th ...

  6. MFC单文档框架编程(二): SDI框架下的消息处理

    MFC单文档框架编程(一) ...................................................................................... ...

  7. python读取word指定内容_python解析html提取数据,并生成word文档实例解析

    简介 今天试着用ptyhon做了一个抓取网页内容,并生成word文档的功能,功能很简单,做一下记录以备以后用到. 生成word用到了第三方组件python-docx,所以先进行第三方组件的安装.由于w ...

  8. 产品需求文档、需求结构图、数据字典、全局说明、用例描述、需求描述、逻辑流程、原型设计、页面交互、登录注册、词汇表、数据统计、用户表设计、接口需求、功能清单、业务流程图、Axure原型、prd、文档实例

    产品需求文档.需求结构图.数据字典.全局说明.用例描述.逻辑流程.原型设计.页面交互.登录注册.词汇表.数据统计.用户表设计.接口需求.功能清单.业务流程图.Axure原型.prd.产品需求文档实例 ...

  9. PubLayNet:36万文档图像版面分析数据集

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx PubLayNet是文档图像版面分析的大型数据集,其布局用多边形边框分割标注.文档的来源是Pu ...

最新文章

  1. 一卡顶四卡,清华推出工具包BMInf玩转百亿大模型
  2. oracle 唯一约束作用,想问下在表上建唯一索引和使用索引+唯一约束,从功能和性能来说有什么差别?...
  3. python条形图一直长_条形图的坐标轴标签过长,怎么优化更美观呢?
  4. PHP函数——urlencode() 函数
  5. Visual Studio 2019 16.3.10 初体验
  6. Valhalla项目的价值
  7. memcached并发CAS模式
  8. 关于用C#编写ActiveX控件2(转)
  9. 歌词滚动效果在Win8 Store 开发中的实现
  10. php 字符串过滤指定字符,php字符串过滤与替换小结
  11. 老去的80后忆当年-致80后的朋友们
  12. combox控件触发事件_dom事件
  13. 今年阿里巴巴重要开源项目全在这里
  14. 解决Android调试不显示 “允许USB调试” 认证窗口
  15. bzoj2827: 千山鸟飞绝 平衡树 替罪羊树 蜜汁标记
  16. PHP语法基础篇——除法取整和取余数
  17. 借助Excel批量重命名图片、文档,以及处理文件名中的空格问题(适合新手小白)
  18. 通俗易懂,unity和c#是什么关系
  19. 喜讯 | 创新引领,数据赋能,数说故事再度斩获金鼠标数字营销大赛双项大奖
  20. python中for in语句有什么用法

热门文章

  1. Explore Nonprofit Cloud Case Management
  2. jinfo 的相关使用 || 两个经典的参数: -Xms -Xmx
  3. Ribbon 负载均衡调用01——概述
  4. 进程与线程||线程应用:异步调用||多线程与单线程
  5. 案例:图书管理——补充知识(数组相关API)||补充知识(数组响应式变化)
  6. 学习jquery的一些笔记
  7. Linux下MySQL数据库的备份与还原,mysql快速导入导出数据库实例演示,解决mysql大数据量数据库导出慢的问题
  8. PK3Err0040: The target device is not ready for debugging. Please check your configuration bit settin
  9. hdu 1788 Chinese remainder theorem again 【crt的具体过程】
  10. 1.6 matlab矩阵的表示