用 Compile 命令时会出错,实际此时程序不一定有错误,所以建议使用Build 命令来进行编译和链接。
我们也可以直接运行程序,如果此时程序创建或更改后没有进行编译,系统会先询问是否需要编译。
如果选择“是” ,则系统会重新编译链接应用程序并运行;选择“否” ,如果程序以前编译过,则运行以前编译过的程序; 也可以选择 “取消” 来撤销这次程序运行。
在程序中设置了断点,需要进行跟踪时使用 Go 命令,用来继续执行程序。
运行我们编写完 OnDraw 方法的应用程序, 得到结果如图 1.17 所示。
我们看到在应用程序窗口的视图区部分 (应用程序窗口中间的白色部分)绘制了一条直线。
我们所编写的 OnDraw 函数是在视图内绘图最常用的函数。
该函数是 CView类中的一个虚函数, 每次当视图需要重新绘制时,应用程序框架都会自动调用该函数(关于视图重画将在后面详细介绍) ,例如用户改变了窗口的大小,或者窗口恢复先前被覆盖的部分时。
在系统自动生成的 OnDraw 函数中已有两行代码: CDrawTestDocpDocGetDocument//获得与视图对应的文档类的指针 ASSERT_VALIDpDoc//检查该指针是否为空 OnDraw 函数传入的参数是 CDC 类对象指针, 这里的 CDC 类就是设备环境类的基类。
我们编写的代码: pDC‐gtLineTo200200 就是调用了 CDC 的成员函数 LineTo 来绘制了一条直线。
函数 LineTo 可以称为绘图函数。
设备环境 DC(Device Context,又称设备上下文或设备描述表)是一个关于如何绘制图形的方法的集合。
它可以绘制各种图形,也可以确定在应用窗口中绘制图形的方式,即确定绘图模式和映射模式。
在 MFC 中包含了一些设备环境类,CDC 是设备环境类基类,还有从其派生的一些设备环境类。
基类 CDC 包含了绘图所需要的所有成员函数,而且除了 CMetaFileDC 派生类之外,其他所有的派生类都只有构造函数和析构函数的定义有所不同。
这些设备环境派生类的目的是为了在不同的显示设备上进行显示。
CDC 类的派生类有 CClientDC 类,CPaintDC 类,CMetaFileDC 类和 CWindowDC 类。
用显示屏幕进行显示常用的派生类是 CClientDC和 CWindowDC。
下表列出 CDC 类派生类的功能简介: 派生类名称 说 明CClientDC 提供对窗口视图区域的图形绘制, 在窗口中绘图时可以 使用此类 DC,但对 WM_PAINTWindows 消息除外CPaintDC 响应 WM_PAINT Windows 消息的设备环境类,可以使 用此 DC 更新 Windows 显示,通常在 MFC 应用程序中 的 OnPaint函数中使用CWindowDC 提供在整个窗口 (包括视图区和非视图区)中进行绘图 的 DCCMetaFileDC 代表 Windows 元文件。
想要创建独立于设备的文件时 可以使用此类 DC,用户可以回放这种文件来创建图像 CWindowDC 类和 CPaintDC 及 CClientDC 类的区别一方面是用 CPaintDC 类和CClientDC 类的对象绘制图形时,绘制区只能是视图区,而不能是非视图区,而CWindowDC 可以在非视图区进行绘图。
如图 1.17 所示的应用程序窗口中,中间的白色部分都属于视图区(直线就绘制在视图区中) ,而窗口标题、菜单栏,工具条和状态条都属于非视图区。
CWindowDC 一般在框架窗口类(CMainFrame)中引用。
在视图窗口中引用 CWindowDC 类时,因为视图类只能管理视图区,所以并不能在非视图区进行绘图。
它们之间的另一个区别是:在 CWindowDC 设备环境类下,坐标系是建立在整个屏幕上的,在像素坐标方式下,坐标原点在屏幕的左上角;而在 CPaintDC 和 CClientDC 下,坐标系是建立在视图区的,在像素坐标方式下,坐标原点在视图区的左上角。
CPaintDC 和 CClientDC 的区别在于它们的绘制机制。
CPaintDC 应用在 OnPaint函数中, 而 响应 Windows 的 WM_PAINT 消息, CClientDC 应用在非响应 WM_PAINT消息的情况下。
所以我们在视图中进行绘图的时候一般都采用 CClientDC,而CPaintDC 一般只在 OnPaint 函数中使用。
用户在绘图之前,必须获取绘图窗口区域的一个设备环境 DC,接着才能够调用其绘图函数进行绘图。
因为在 OnDraw 函数中,系统已经自动传入了一个设备环境类指针, 用户可以直接通过该指针调用绘图函数进行绘图。
如果要在视图类的其它函数中进行绘图就必须首先获取设备环境 DC,常用的获取方法有以下几种: (1) 如果要绘制.
上一篇:
cvs使用手册
下一篇:
陕西师范大学远程教育学院毕业论文