创建一个单文档应用程序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类。 类派生的 类
  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映 射模式
相关文档
最新文档