创建一个单文档应用程序ppt课件

合集下载

第7章 单文档应用程序

第7章  单文档应用程序

7.1.2 Doc类
文档/视图的功能很强大,但也很复杂, MFC框架在后台完成了大量工作,若仅 通过AppWizard自动生成的一些代码,是 无法了解文档/视图如何实现的,有必要 阅读MFC源代码,简要的了解工作流程, 对于自身能力的提升非常有帮助。 注:MFC框架的源代码是公开的,MFC 的函数功能及调用流程,在源代码中得 到完全体现,若不确定某个函数的内部 实现,可打开源代码,找到函数定义处, 阅读后便可柳暗花明。源代码路径
7.4.1 设置分区
【范例7-5】新建一个单文档工程名为 Sdi064,在状态栏同步显示鼠标坐标位 置和颜色信息。
7.4.2 更新内容
在程序运行时,可动态更新状态栏窗格 显示的文本,用于显示各种提示信息, 如当前鼠标位置、当前位置的颜色信息 等。SetPaneText函数设置窗格显示的文 本,格式如下: BOOL CStatusBar::SetPaneText(int nIndex,LPCTSTR lpszNewText,BOOL bUpdate=TRUE) 参数: nIndex:要更新的窗格的位置索引。 lpszNewText:新文本值。
7.1.3 View类
ASSERT断言宏用于判断其参数表达式 是否为真,如ASSERT(1==0); 会弹出一 个错误窗口,并退出程序。类似的断言 宏VERIFY具有同样的功能,区别在于 ASSERT宏只能在Debug模式下可用,在 Release版本中失效,而VERIFY宏在 Release版本仍然被执行,但不会中断程 序。 #ifndef和#endif是预编译指令,用于预编 译判断,根据条件决定要编译哪些语句, #ifndef判断是否没有定义某个宏,即if no
7.3.1 添加工具栏资源
【范例7-4】新建一个单文档工程名为 Sdi063,添加一个工具栏,实现鼠标交 互式绘点、绘线功能。

第16讲单文档程序结构

第16讲单文档程序结构

10
向导生成的核心类及其功能
1.应用程序类CMyTextOutApp CMyTextOutApp类是MFC的CWinApp类的派生类。 它的主要功能有: 应用程序的初始化; 程序的启动; 程序运行结束时的清理工作。 应用程序对象theApp是一个唯一的全局变量,它的 主要功能是通过调用WinMain()主函数启动程序的 运行。MFC应用程序框架也有一个作为程序入口 点的WinMain()主函数,但在源程序中看不见该函 数,它在MFC中已定义好并同应用程序相链接。
25
CDC类
为了支持GDI绘图,MFC提供了两种重要的类:
设备环境类(CDC类),用于设置绘图属性和 绘制图形;
绘图对象类,封装了各种GDI绘图对象,包括画 笔、刷子、字体、位图、调色板和区域。 MFC中,设备环境DC是由VC++的CDC类对象来 表示的,可以调用CDC的很多成员函数来完成各 种各样的绘图操作。
【例9-1】利用MFC AppWizard[exe]向导生成 一个SDI单文档应用程序MyTextOut。
6
利用向导建立一个单文档应用程序框架
【编程步骤】 (1)在Visual C++ IDE中执行File|New命令,打开 New对话框。在项目类型列表框中选择MFC AppWizard[exe]项,在Project name框中输入项目 名称,本例为MyTextOut。选择好合适的路径。
13
向导生成的核心类及其功能
5.文档模板类CSingleDocTemplate 文档、视图、框架类和所涉及的资源形成了一 种固定的联系,这种固定的联系就称为文档 模板。 文档模板类CSingleDocTemplate是MFC的 CDocTemplate类的派生类 CSingleDocTemplate文档模板类在应用程序 中有着非常重要的作用,是它将原本独立的 文档、视图和框架窗口对象联系在一起。

创建一个单文档应用程序ppt课件

创建一个单文档应用程序ppt课件

图2 MFC AppWizard的“Step 1”对话框
图2 MFC AppWizard的“Step 2”对话框
4.第三步 单击[下一个]按钮进入下一步,出现如图3所示的对话框。允许用户在程序中加入复 合文档、自动化、ActiveX控件的支持。 5. 第四步 单击[下一个]按钮进入下一步,出现如图4所示的对话框,对话框的前几项依次确定 对浮动工具条、打印与预览以及通信等特性的支持。
创建一个单文档 应用程序
2. 第一步 单击[确定]按钮,出现如图1所示的对话框,进行下列选择: (1)从应用程序类型单个文档(SDI)、多重文档(MDI)和基本对话框(基于对话框的 应用程序)中选择“单个文档”。 (2) 决定应用程序中是否需要MFC的文档视图(“文档/查看体系结构支持”)结构的 支持。若不选定此项,则程序中的磁盘文件的打开、保存以及文档和视图的相互 作用等功能需要用户来实现,且将跳过Step 2~Step 5,直接弹出“Step 6”对话 框。一般情况下,应选中此项。 (3) 选择资源所使用的语言,这里是“中文[中国]”。 3.第二步 单击[下一个]按钮,出现如图2所示的对话框,让用户选择程序中是否加入数据 库的支持(有关数据库的内容将在以后的章节中介绍)。
void CEx_SDIHelloView::OnDraw(CDC* pDC) { CEx_SDIHelloDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CPen pen; // 定义一个画笔变量 pen.CreatePen( PS_SOLID, 2, RGB(255,0,0)); // 创建红色画笔 // 将此画笔选入当前设备环境并保存原来的画笔 CPen* pOldPen = pDC->SelectObject( &pen);// 用此画笔绘制直线 pDC->MoveTo(100,100); pDC->LineTo(700,400); CBrush brush; // 定义一个画刷变量 brush.CreateSolidBrush(RGB(0,255,0));// 创建绿色画刷 CBrush* pOldBrush =pDC->SelectObject(&brush);

VC MFC基础入门PPT课件

VC MFC基础入门PPT课件
COLORREF m_nColors[3]; //用户可选颜色数组 DWORD m_nColorIndex; // 当前所选颜色索引 CString m_strShow; // 显示的内容 BOOL m_bShow; // 是否显示
7
在CMy_ResView::CMy_ResView()中初始化成员变量: m_nColors[0] = RGB(255,0,0); m_nColors[1] = RGB(0,255,0); m_nColors[2] = RGB(0,0,255); m_nColorIndex = 0; m_strShow = "Hello World!"; m_bShow = TRUE;
10
在My_ResView.cpp文件中,读者会看到ID_OPER_SHOW
对应的COMMAND消息的绑定,代码如下 :
BEGIN_MESSAGE_MAP(CMy_ResView, CView)
//{{AFX_MSG_MAP(CMy_ResView)
ON_COMMAND(ID_OPER_SHOW, OnOperShow)
void CMy_ResView::OnOperShow()
{m_bShow = !m_bShow;
Invalidate(); // 强制程序重新窗口
}
重新编译运行程 序,可看到“显 示”菜单项工作
正常
11
(2) UPDATE_COMMAND_UI消息的响应
UPDATE_COMMAND_UI消息是在窗口将要绘制菜单项的时
第10章 在MFC中创建应 用程序的资源
1
10.1 VC++程序中的资源
资源
位图 光标
对话框
字符串

vc_6单文档应用程序 vc入门ppt

vc_6单文档应用程序 vc入门ppt

两类文档视结构程序
• 单文档界面(SDI)应用程序 • 多文档界面(MDI)应用程序
SDI
MDI
应用程序向导生成的实现文件
• 对应于一个头文件中定义的类,都有一个类的实 现文件。在实现文件中主要定义在头文件中声明 的成员函数的实现代码和消息映射。 • 值得说明的是,向导生成的成员函数有很多,不 要因为没有使用某个成员函数而删除其声明和实 现代码。并且,用户一般不要轻易修改文件中那 些以灰色字体显示的代码,因为这些代码是通过 资源编辑器或ClassWizard类向导进行维护的。
从AppWizard向导开始……
CObject CCmdTarget
CWinThread CDocument
CWinApp
CWnd
CFrameWnd CView CHelloDoc CMainFrame CHelloView
CHelloApp
CFrameWnd
CView
CDocument
CWinApp 应用程序类
2.1 文档类头文件
向 导 为 项 目 Hello 生 成 了 文 档 类 的 头 文 件
HelloDoc.h, 该 头 文 件 用 于 定 义 文 档 类
CHelloDoc。CHelloDoc 类 是 MFC 的 CDocument
类的派生类,它主要负责应用程序数据的保存和 装载,实现文档的序列化功能。
4.1应用程序类头文件
向导为项目Hello生成了应用程序类的头文件
Hello.h,该头文件用于定义应用程序类CHelloApp。
CHelloApp类是MFC的CWinApp类的派生类,它主 要负责完成应用程序的初始化、程序的启动和程序 运行结束时的清理工作;接受所有事件消息,并将 这 些 消 息 传 递 给 由 CFrameWnd 派 生 的 类 和 由

第10章单文档应用程序设计

第10章单文档应用程序设计

《面向对象技术与Visual C++》--第10章
8
虚拟键代码
键盘类型根据语言或国家的不同而不同,为了避免依赖于特 定国家的键盘布局,Windows键盘驱动程序将键盘的扫描码 转换为一组标准虚拟键代码,和按键消息一起传给应用程序。
虚拟键代码 Windows 标识符 VK_INSERT VK_LEFT VK_NEXT VK_BACK VK_RETURN
《面向对象技术与Visual C++》--第10章
12
菜单的建立和实现
菜单编辑器的使用。 为程序加入菜单的操作分为以下几步:
通过菜单编辑器生成菜单界面 ; 建立菜单项和消息处理函数的映射; 在处理函数中添加菜单项功能代码。
《面向对象技术与Visual C++》--第10章
13
滚动条
滚动功能使用户可以阅读和编辑大于视图窗口 的任何东西--无论是文本、表格、数据库记录 还是图像。 只要它所需的空间超出了客户区域所能提供的 空间,就可以使用滚动条。
《面向对象技术与Visual C++》--第10章
3
AppWizard向导创建的类和文件
AppWizard向导为生成的派生类创建单独的源 文件,缺省情况下,类名和类源文件名是基于 项目名的(可以在AppWizard向导创建应用程 序过程中指定其他名称)。 AppWizard向导为单文档应用程序创建4个派 生类和其它一些文件。这4个类分别是文档类、 视图类、主框架窗口类和应用程序类。
《面向对象技术与Visual C++》--第10章
22
控 件 图形控件 静态文本控件 编辑框 组框 显示图标
描 述
常用于为其他控件提供选项卡 允许用户的输入, 允许用户的输入,并提供完整的编辑能力 视觉上将控件分组(典型情况下是一系列的单选钮、复选框) 视觉上将控件分组(典型情况下是一系列的单选钮、复选框)

单文档应用程序设计4ppt课件

单文档应用程序设计4ppt课件

delete pDC;
精选课件ppt
20
第10章 单文档应用程序设计
10.6.4 绘图工具对象 绘图工具对象
CFont CBrush CPen ……
精选课件ppt
21
第10章 单文档应用程序设计
10.6.4 绘图工具对象 绘图工具对象
图形对象 类
等价的图形设备句 柄
描述
CBrush HBRUSH
10.6.1 GDI GDI—Graphics Device Interface
GDI是用户可以调用的一套用于绘图操作的函数集。
应用程序
GDI

显示器


述 环
打印机

绘图仪
精选课件ppt
5
第10章 单文档应用程序设计
10.6.1 GDI
GDI—Graphics Device Interface
描述 基类,可用来直接访问显示器或打印机等设备上下文。 窗口的客户区的显示上下文,在窗口的OnPaint成员函数中使用,其 构造中调用BeginPaint(),析构中调用EndPaint()。 窗口的客户区的显示上下文,直接在窗口客户区进行绘制时使用(非 OnPaint)。其构造函数中调用的不是BeginPaint函数,而是GetDC 函数;相应的,ReleaseDC函数在其析构函数被自动调用。 整个窗口的显示上下文,包括客户区和非客户区。 Windows图元文件的设备上下文。一个Windows图元文件包括一系列 的图形设备接口命令,可以通过重新执行这些命令来创建图形。
R2_XORPEN
dest = src XOR dest
R2_NOTXORPEN
dest =精N选O课T 件(srpcpXtOR dest)

第5章 单文档应用程序

第5章  单文档应用程序

5.2.1 在程序中声明一个文档类
当使用MFC创建应用程序时,AppWizard创建单个文档 创建应用程序时, 当使用 创建应用程序时 创建单个文档 节创建的项目中, 类。在5.1节创建的项目中,这个文档类是 节创建的项目中 CS数 5.2.2 CDocument类的成员函数
第5 章
单文档应用程序
本章将详细介绍如何开发单文档应用程序。 本章将详细介绍如何开发单文档应用程序。单文档应用 程序是最简单、最重要的文档/视图结构的应用程序 视图结构的应用程序。 程序是最简单、最重要的文档 视图结构的应用程序。本章 主要涉及的内容包括: 主要涉及的内容包括: • 如何利用 如何利用MFC创建单文档应用程序; 创建单文档应用程序; 创建单文档应用程序 • CDocument类在单文档应用程序中的作用; 类在单文档应用程序中的作用; 类在单文档应用程序中的作用 • 详细介绍文档类的函数 详细介绍文档类的函数InitInstance(); ; • 视图类的使用; 视图类的使用; • 如何在单文档应用程序中使用控件
5.1
利用MFC创建单文档程序 利用MFC创建单文档程序 MFC
本节详细介绍如何创建一个单文档应用程序。 本节详细介绍如何创建一个单文档应用程序。
5.2
CDocument类 CDocument类
节创建的单文档应用程序SDI_ActiveX中包含 个 中包含5个 在5.1节创建的单文档应用程序 节创建的单文档应用程序 中包含 类:CAboutDlg、CMainFrame、CSDI_ActiveXApp、 、 、 、 CSDI_ActiveXDoc和CSDI_ActiveXView。本节重点讲述由 和 。 CDocument类派生的 类派生的CSDI_ActiveXDoc类。 类派生的 类

第 使用Word创建和编辑文档PPT课件

第 使用Word创建和编辑文档PPT课件
Word工作界面

启动Word后,即可看到图4-1所示的Word工作窗口,其包括的主
要元素包括标题栏、菜单栏、工具栏、任务窗格、状态栏和滚动条。

图4-1 Word工作窗口
第1页/共10页
新建文档

利用【新建文档】任务窗格可以新建文档,方法为:在Word菜单栏
中选择【文件】|【新建】命令,在工作窗口右侧打开【新建文件】任
可以将插入点定位于该单元格中。
第6页/共10页
编辑表格

在Word中,对创建好的表格可以有多种编辑方式 ,最常用的3种编
辑表格操作如下所示:
插入和删除单元格、行以及列 合并单元格 拆分单元格 •
第7页/共10页
插入图片

用户在Word中可以方便地在文档中插入图片。插入到文档中的图片
可以通过剪贴画库、扫描仪或数码相机获得,也可以从本地磁盘和网络驱动
宽度。
第4页/共10页
编辑文档

当用户发现文档中有需要修改甚至错误的地方时,可以通过【编辑】
菜单中的命令来编辑和修改文档 。编辑文档操作包括以下几种:
选定文本 移动和复制 查找和替换 撤销和恢复
第5页/共10页
创建表格

在Word中,可以通过在菜单栏中选择【表格】|【插入】|【表格】
命令,或者单击工具栏上的【插入表格】按钮,将表格添加到文档中。
动转到下一行。在改写方式下,输入的内容将覆盖插入点后的内容。Word
默认的输入状态是插入方式。

在文本行内按Enter键之后,将在文档内创建新的段落。按键盘上的
空格键之后,就在插入点处添加一个空格符号。在全角状态下,每按一次空
格键就会产生一个全角的空格符号,它相当于一个汉字的宽度;在半角状态

单文档应用程序设计1

单文档应用程序设计1

多文档应用程序
CMainFrame CChildFrame
第10章 单文档应用程序设计
10.2.3
MFC类层次
CMyWinApp theApp; …… BOOL CMyWinApp::InitInstance() { …… CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_MYTYPE, RUNTIME_CLASS(CMyDoc), RUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CMyView)); AddDocTemplate(pDocTemplate); CMainFrame* pMainFrame = new CMainFrame; …… } CObject CCmdTarget CWndTread CWinApp CMyWinApp CWnd CView CMyView CFrameWnd CMDIFrameWnd CMDIChildWnd CDocument CMyDoc CDocTemplate CMultiDocTemplate
10.2.2
MFC类层次
CObject CCmdTarget CWndTread CWinApp CMyWinApp CWnd CView CMyView CFrameWnd CMDIFrameWnd CMDIChildWnd CDocument CMyDoc CDocTemplate CMultiDocTemplate
MFC类层次
CObject CCmdTarget CWndTread CWinApp CMyWinApp CWnd CView CMyView CFrameWnd CMainFrame CDocument CMyDoc CDocTemplate CSingleDocTemplate

Opencascade建立单文档

Opencascade建立单文档

Opencascade建立OCAF单文档图1为MFC单文档应用程序界面;图2为OCAF单文档应用程序界面。

图1图2基于MFC单文档建立OCAF单文档的步骤:1、创建一个MFC单文档应用程序。

在项目的头文件(或包含文件)和库文件路径里添加Open cascade 的所有头文件和库文件路径(具体操作参见<<Opencascade 6.60调试总结>>文档);将需要使用的头文件添加到stdafx.h里;打开工程属性,在链接器选项卡中的输入项的附加依赖项中添加OpenCascade 库文件;2、APP类中OpenCascade图形设备环境变量添加和设置。

在SWFZ.h头文件里添加:#include<Standard_Macro.hxx>#include<Graphic3d_GraphicDriver.hxx>CSWFZApp类中添加成员和用法:protected:Handle_Graphic3d_GraphicDriver myGraphicDriver;Handle_Graphic3d_GraphicDriver GetGraphicDriver() const{return myGraphicDriver;}CSWFZApp类的构造函数添加:try{Handle(Aspect_DisplayConnection) aDisplayConnection;myGraphicDriver = Graphic3d::InitGraphicDriver (aDisplayConnection);}catch (Standard_Failure){ExitProcess(1);}注意:需要注释//#ifdef _DEBUG//#define new DEBUG_NEW//#endif原因是因为OpenCascade对New操作符进行了重载,与VS中的定义存在冲突。

《单文档与多》课件

《单文档与多》课件
《单文档与多文档》 PPT课件
目录
CONTENTS
• 单文档概述 • 多文档概述 • 单文档与多文档的比较 • 如何选择单文档与多文档 • 单文档与多文档的发展趋势
01 单文档概述
单文档的定义
01
单文档是指一个独立的、完整的 文档,通常用于记录、描述或说 明某一主题或事项。
02
它是一个独立的文件,可以在各 种应用程序中打开、编辑和保存 。
内容管理和编辑工具的完善
多文档将进一步优化内容管理和编辑工具,提供更加丰富的格式设置、
图表展示和多媒体插入等功能,提高文档制作效率和质量。
03
智能化和自动化程度提高
未来的多文档将更加注重智能化和自动化技术的应用,通过自然语言处
理、机器学习和人工智能等技术手段,实现文档的自动化分类、标签化
和搜索等功能。
根据工作习惯选择
总结词
顺应习惯更高效
详细描述
根据个人的工作习惯选择单文档或多 文档PPT课件。习惯于简洁、直接表 达的人更适合单文档;而喜欢分点、 有条理展示的人则更适合多文档。
根据实际需要选择
Байду номын сангаас总结词
实际需要决定形式
详细描述
根据实际需要选择单文档或多文档PPT课件。例如,如果需 要在短时间内传达大量信息,多文档可能更合适;如果需要 强调整体与部分的关系,单文档更能突出重点。
单文档的特点
01
02
03
结构简单
单文档通常只有一个主标 题和若干段落、列表等子 内容,结构相对简单。
易于编辑
单文档可以在各种文本编 辑器或办公软件中打开, 进行编辑和修改。
易于分享
单文档可以通过电子邮件 、云存储等方式轻松分享 给他人。

单文档应用程序设计3

单文档应用程序设计3

创建工具栏资源

选择Insert->Resource命令 在Insert Resource对话框中选中Toolbar 绘制新工具栏资源中的按钮 分配工具栏按钮的ID号
第10章 单文档应用程序设计
10.5.1 工具栏 手动创建工具栏

构建一个CToolBar对象 工具栏实际上是主框架窗口的子窗口,因此工具栏对象应依
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); DockControlBar(&m_wndToolBar1);
void CMenuView::OnUpdateDrawLine(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck(m_bLine); }
第10章 单文档应用程序设计
10.5.1 工具栏 工具栏按钮的按下与弹起

编辑消息映射函数
第10章 单文档应用程序设计
10.5.1 工具栏 手动创建工具栏

创建工具栏资源 构建一个CToolBar对象 调用CToolBar::Create函数创建工具栏窗口 调用CToolBar::LoadToolBar载入工具栏资源
第10章 单文档应用程序设计
10.5.1 工具栏 手动创建工具栏
编辑工具栏资源
拖动尾部的空白

《单文档与多文档》课件

《单文档与多文档》课件
高级应用
文档的版本控制
01
02
03
版本记录
对文档进行版本控制,记 录每个版本的修改时间和 修改内容,以便追踪和回 溯。
版本比较
通过比较不同版本的文档 ,可以快速识别出改动的 内容和改动的作者,有助 于协作和冲突解决。
版本分支
在多文档编辑时,可以使 用版本分支来管理不同版 本的文档,便于并行工作 和合并操作。
保存与关闭单文档
保存单文档
在编辑完单文档后,可以通过“文件 ”菜单选择“保存”来保存单文档, 也可以选择“另存为”来选择不同的 保存位置或文件名。
关闭单文档
完成编辑后,可以通过“文件”菜单 选择“关闭”来关闭单文档。
02
多文档编辑
打开与创建多文档
打开多个文档
在PPT中,您可以通过“文件”菜单下的“打开”选项,同时打开多个PPT文 档。
合并与比较多文档
合并文档
如果您需要将多个PPT文档合并成一个,可以先打开这些文档,然后使用“文件 ”菜单下的“保存为”选项,选择一个新的文件名和位置进行保存,这样就可以 将多个文档的内容合并在一起。
比较文档
如果您需要比较两个PPT文档之间的差异,可以使用“审阅”菜单下的“比较” 选项,将两个文档进行比较,高亮显示不同之处。
创建新的文档
您也可以通过“文件”菜单下的“新建”选项,创建一个新的PPT文档,并在其 中进行编辑。
切换与同步多文档
切换文档
在同时打开多个PPT文档时,您可以使用快捷键Ctrl+Tab或 者在任务栏上点击相应的文档图标来切换不同的文档。
同步编辑
如果您需要在多个文档之间同步编辑,可以使用“视图”菜 单下的“窗口”选项,将多个文档水平或垂直排列,以便同工作需要,为不同用 户或角色设置不同的文档 访问和编辑权限,确保文 档的安全性和完整性。

单文档应用程序设计2

单文档应用程序设计2

AfxThrowResourceException();
CMenu *pPopupMenu=ContextMenu.GetSubMenu(0); ASSERT(pPopupMenu!=NULL); ClientToScreen(&point); pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x,point.y,this); CView::OnRButtonDown(nFlags, point); }
第10章 单文档应用程序设计
10.4.3 上下文菜单
单击鼠标右击时激活的菜单,称为上下文菜单
加入上下文菜单,一般分三步进行:
编辑菜单资源,设置菜单属性(包括菜单Caption和ID) 使用ClassWizard,映射鼠标右键消息 在鼠标右键消息映射函数中利用Cmenu类创建上下文菜单
第10章 单文档应用程序设计
第10章 单文档应用程序设计
10.4.3 上下文菜单 实例代码
void CMenuView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default CMenu ContextMenu; if(!ContextMenu.LoadMenu(IDR_CONTEXTMENU))
AfxThrowResourceException();
CMenu *pPopupMenu=ContextMenu.GetSubMenu(0); ASSERT(pPopupMenu!=NULL); ClientToScreen(&point); pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x,point.y,this); CView::OnRButtonDown(nFlags, point); }

轻松学Visual C++之单文档应用程序

轻松学Visual C++之单文档应用程序
加速键资源 对话框资源 图标资源 菜单资源 字符串表 版本信息 工具栏
8.2.2 各类的详细信息
这一小节就上面出现的5个类进行详细介绍。 1.CAboutDlg 这是一个“关于”对话框类,该对话框用于显示软件的版本等 信息。 2.CFirstSingleApp 该类是主应用程序类,是CWinApp的派生类。主应用程序类的 封装用于Windows应用程序的初始化、运行和终止。 3.CFirstSingleDoc 该类是一个文档类,是CDocument的派生类。 4.CFirstSingleView 该类是视图类,是CView的派生类。 5.CMainFrame 该类是一个框架类,派生于CFrameWnd类,表示应用程序的主 框架窗口。
第8章 单文档应用程序
单文档是一种常见的文件处理程序,如Windows自带 的记事本和画图程序等。相对于对话框简单的拖放 控件,单文档程序具有很强的文件读取显示功能。 单文档程序的核心是文档视图结构,文档用于读取 和保存数据。视图用于数据的显示和编辑。本章将 基于单文档应用程序对MFC框架进行剖析,探讨其 内部组织结构。
8.1 创建一个单文档程序
下面,我们将利用MFC AppWizard来创建一个项目 名为FirstSingle的单文档应用程序,创建过程中间的 一些属性设置暂且不必理会。
8.2 单文档程序框架剖析
这一节我们基于单文档程序对MFC框架进行剖析, 使读者对MFC有进一步了解。MFC(Microsoft Foundation Classes)是一个微软公司提供的类库,是 一种应用程序框架。目前程序开发人员大都基于这 一框架进行Windows程序开发。
下面,我们来编写一个简单的获得键盘字符并通过 视类显示的小例子。通过这个小例子,让读者对文 档和视图有一定的感性理解。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

画笔
图2 MFC AppWizard的“Step 1”对话框
图2 MFC AppWizard的“Step 2”对话框
4.第三步 单击[下一个]按钮进入下一步,出现如图3所示的对话框。允许用户在程序中加入复 合文档、自动化、ActiveX控件的支持。 5. 第四步 单击[下一个]按钮进入下一步,出现如图4所示的对话框,对话框的前几项依次确定 对浮动工具条、打印与预览以及通信等特性的支持。
CString s; s.Format("绘制各种图形");pDC->TextOut(50,50,s); //文字输Object( pOldPen ); pDC->SelectObject( pOldBrush); }
// 恢复设备环境中原来的画笔 // 恢复设备环境中原来的画笔
图3 MFC AppWizard的“Step 3”对话框
图4 MFC AppWizard的“Step 4”对话框
3.3.2 创建一个单文档应用程序
6. 第五步 保留以上默认值,单击[下一个]按钮进入下一步。弹出如图5所示的对话框,这里出现三 个方面的选项,供用户来选择: (1) 应用程序的主窗口是MFC标准风格还是窗口左边有切分窗口的浏览器风格; (2) 在源文件中是否加入注释用来引导用户编写程序代码; (3) 使用动态链接库还是静态链接库。
pDC->SetWindowExt(1000,1000);
// 设置窗口范围
pDC->SetViewportExt(rectClient.right,-rectClient.bottom); 口范围
// 设置视
pDC->SetViewportOrg(rectClient.right/2,rectClient.bottom/2);// 设置视口原 点
件 Ex_SDIHello.exe,运行结果如图7所示。
标题栏 工具栏
菜单栏
图6 MFC AppWizard的“Step 6”对话框
文档窗 口
图7 Ex_SDIHello运行结果
状态栏
• VC++所编写的Windows图形应用程序通 常是在视图类中通过OnDraw函数中添加绘 图代码完成图形的生成。OnDraw函数是 CView类中的一个虚拟成员函数,每当窗 口需重绘时应用程序框架会调用它。
pDC->LineTo(700,400);
CBrush brush; // 定义一个画刷变量 brush.CreateSolidBrush(RGB(0,255,0));// 创建绿色画刷
CBrush* pOldBrush =pDC->SelectObject(&brush);
pDC->Rectangle(200,200,500,500);//画矩形 pDC->Ellipse(600,200,700,500);//画椭圆
下面的OnDraw函数是由AppWizard直接生成的:
void CEx_SDIHelloView::OnDraw(CDC* pDC)
{ CEx_SDIHelloDoc* pDoc = GetDocument();//获 取当前文档指针
ASSERT_VALID(pDoc);// 检查指针是否为空
// TODO: add draw code for native data here //下面可添加自己的程序代码
}
例1 坐标映射
[例Ex_Draw] 通过设置窗口和视口大小来改变显示的比例
(1) 用MFC AppWizard创建一个默认的单文档应用程序Ex_Draw。
(2) 在CEx_DrawView::OnDraw函数中添加下列代码:
void CEx_DrawView::OnDraw(CDC* pDC)
{
创建一个单文档应用程序
用MFC AppWizard(MFC应用程序向导)可以方便地创建一个通用的Windows单文档应用程 序,其步骤如下。 1. 开始 选择“文件”→“新建”菜单,在弹出的“新建”对话框中,可以看到工程标签页面中,显
示出一 系列的应用程序项目类型;选择MFC AppWizard(exe)的项目类型(该类型用于创建可执行 的Windows应用程序),将项目工作文件夹定位在“D:\Visual C++ 6.0程序”,并在工程编辑 框中输入项目名Ex_SDIHello,结果如图1所示。
图5 MFC AppWizard的“Step 5”对话框
3.3.2 创建一个单文档应用程序
7. 第六步 保留默认选项,单击[下一步]按钮进行下一步,出现如图6所示的对话框。在 这里,用户可以对MFC AppWizard提供的默认类名、基类名、各个源文件名进 行修改。 单击[完成]按钮出现一个信息对话框,显示出用户在前面几个步骤中作出的选择 内容,单击[确定]按钮系统开始创建,并又回到了Visual C++ 6.0的主界面。 8.编译并运行 到这里为止,用户虽然没有编写任何程序代码,但MFC AppWizard已经根据用 户的选择内容自动生成基本的应用程序框架。单击编译工具栏上的运行工具按钮 “”或按快捷键Ctrl+F5,系统开始编连并运行生成的单文档应用程序可执行文
pDC->Ellipse(CRect(-500,-500,500,500)); }
例2 各种图形绘制
void CEx_SDIHelloView::OnDraw(CDC* pDC)
{ CEx_SDIHelloDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
图1 MFC AppWizard的“新建”对话框
2. 第一步 单击[确定]按钮,出现如图1所示的对话框,进行下列选择: (1)从应用程序类型单个文档(SDI)、多重文档(MDI)和基本对话框(基于对话框的 应用程序)中选择“单个文档”。 (2) 决定应用程序中是否需要MFC的文档视图(“文档/查看体系结构支持”)结构的 支持。若不选定此项,则程序中的磁盘文件的打开、保存以及文档和视图的相互 作用等功能需要用户来实现,且将跳过Step 2~Step 5,直接弹出“Step 6”对话 框。一般情况下,应选中此项。 (3) 选择资源所使用的语言,这里是“中文[中国]”。 3.第二步 单击[下一个]按钮,出现如图2所示的对话框,让用户选择程序中是否加入数据 库的支持(有关数据库的内容将在以后的章节中介绍)。
CPen pen;
// 定义一个画笔变量
pen.CreatePen( PS_SOLID, 2, RGB(255,0,0)); // 创建红色画笔
// 将此画笔选入当前设备环境并保存原来的画笔
CPen* pOldPen = pDC->SelectObject( &pen);// 用此画笔绘制直线
pDC->MoveTo(100,100);
CEx_DrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rectClient;
GetClientRect(rectClient);
// 获得当前窗口的客户区大小
pDC->SetMapMode(MM_ANISOTROPIC); // 设置MM_ANISOTROPIC映 射模式
相关文档
最新文档