VC++多文档实例编程分析
下面分析一个多文档实例的源码,看一下多文档界面的实现;
自
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++多文档实例编程分析相关推荐
- VC++ 多文档模板(添加新文档模板)编程实例
现在假设要做一个VC++多文档程序,一个文档类型处理txt文件,一个文档类型处理图片文件: 新加一个Img的文档模板类型: 先新建一个多文档工程,名为duodocDemo1: 在菜单选择 插入-类: ...
- 实例讲解如何绕过 Office 文档的反分析技术
本文讲的是实例讲解如何绕过 Office 文档的反分析技术,今天我们来试着分析一个使用Word文档的恶意VBA项目.该文档的作者对文件中的VBA项目进行了密码保护,以防止对恶意代码的检查,同时也使用了 ...
- 多模态大模型时代下的文档图像智能分析与处理
多模态大模型时代下的文档图像智能分析与处理 0. 前言 1. 人工智能发展历程 1.1 传统机器学习 1.2 深度学习 1.3 多模态大模型时代 2. CCIG 文档图像智能分析与处理论坛 2.1 文 ...
- 大咖齐聚CCIG论坛——文档图像智能分析的产业前沿
目录 1 文档图像智能分析技术 2 大咖齐聚CCIG@2023 3 议题介绍 3.1 从模式识别到类脑研究 3.2 视觉-语言预训练模型演进及应用 3.3 篡改文本图像的生成和检测 3.4 智能文档处 ...
- 细粒度 文档图像版面分析
基于实例分割网络的细粒度文档图像版面分析 英文引用:Zhao P, Wang W, Cai Z, et al. Accurate Fine-Grained Layout Analysis for th ...
- MFC单文档框架编程(二): SDI框架下的消息处理
MFC单文档框架编程(一) ...................................................................................... ...
- python读取word指定内容_python解析html提取数据,并生成word文档实例解析
简介 今天试着用ptyhon做了一个抓取网页内容,并生成word文档的功能,功能很简单,做一下记录以备以后用到. 生成word用到了第三方组件python-docx,所以先进行第三方组件的安装.由于w ...
- 产品需求文档、需求结构图、数据字典、全局说明、用例描述、需求描述、逻辑流程、原型设计、页面交互、登录注册、词汇表、数据统计、用户表设计、接口需求、功能清单、业务流程图、Axure原型、prd、文档实例
产品需求文档.需求结构图.数据字典.全局说明.用例描述.逻辑流程.原型设计.页面交互.登录注册.词汇表.数据统计.用户表设计.接口需求.功能清单.业务流程图.Axure原型.prd.产品需求文档实例 ...
- PubLayNet:36万文档图像版面分析数据集
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx PubLayNet是文档图像版面分析的大型数据集,其布局用多边形边框分割标注.文档的来源是Pu ...
最新文章
- 一卡顶四卡,清华推出工具包BMInf玩转百亿大模型
- oracle 唯一约束作用,想问下在表上建唯一索引和使用索引+唯一约束,从功能和性能来说有什么差别?...
- python条形图一直长_条形图的坐标轴标签过长,怎么优化更美观呢?
- PHP函数——urlencode() 函数
- Visual Studio 2019 16.3.10 初体验
- Valhalla项目的价值
- memcached并发CAS模式
- 关于用C#编写ActiveX控件2(转)
- 歌词滚动效果在Win8 Store 开发中的实现
- php 字符串过滤指定字符,php字符串过滤与替换小结
- 老去的80后忆当年-致80后的朋友们
- combox控件触发事件_dom事件
- 今年阿里巴巴重要开源项目全在这里
- 解决Android调试不显示 “允许USB调试” 认证窗口
- bzoj2827: 千山鸟飞绝 平衡树 替罪羊树 蜜汁标记
- PHP语法基础篇——除法取整和取余数
- 借助Excel批量重命名图片、文档,以及处理文件名中的空格问题(适合新手小白)
- 通俗易懂,unity和c#是什么关系
- 喜讯 | 创新引领,数据赋能,数说故事再度斩获金鼠标数字营销大赛双项大奖
- python中for in语句有什么用法
热门文章
- Explore Nonprofit Cloud Case Management
- jinfo 的相关使用 || 两个经典的参数: -Xms -Xmx
- Ribbon 负载均衡调用01——概述
- 进程与线程||线程应用:异步调用||多线程与单线程
- 案例:图书管理——补充知识(数组相关API)||补充知识(数组响应式变化)
- 学习jquery的一些笔记
- Linux下MySQL数据库的备份与还原,mysql快速导入导出数据库实例演示,解决mysql大数据量数据库导出慢的问题
- PK3Err0040: The target device is not ready for debugging. Please check your configuration bit settin
- hdu 1788 Chinese remainder theorem again 【crt的具体过程】
- 1.6 matlab矩阵的表示