网站大量收购独家精品文档,联系QQ:2885784924

DC,CDC,HDC,CClientDC有什么本质的区别.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DC,CDC,HDC,CClientDC有什么本质的区别

Vc中关于DC(设备环境函数(Device Context))的理解 问:设备描述表DC是一个什么概念,谁通俗的说说,先谢了 学习Vc,首先遇到的就是这个dc,即设置描述表,输出文字,绘图都要用这个,好象它太重要了。但是我就是不明白,这是什么东西。 ? 一些教程看了,但还是不太了解,谁能通俗的说说,能快速理解它,谢谢。 ? 答:1、作画之前需要准备好画布、画笔、调色板等。 ? 当使用GDI函数如MoveToEx/LineTo, TextOut时,只是告诉系统要划线或写字了,但用什么样的笔(HPEN),字是什么颜色(SetTextColor),画在哪张“纸”(HBITMAP)上需要从一个由系统定义的数据结构中去读取。 这个数据结构被称为Device Context(DC)。 ? 换句话说,GDI函数只是绘画的动作,而DC则保存了绘画所需的材料和工具。 ? 2、设备环境函数(Device Context) ? 设备环境是一个结构,它定义了一系列图形对象及其相关的属性,以及会影响输出结果的绘图方式。这些图形对象包括:画笔(用于画直线),笔刷(用于绘图和填充),位图(用于屏幕的拷贝或滚动),调色板(用于定义可用的颜色集),剪裁区(用于剪裁和其他操作),路径(用于绘图和画图操作)。设备环境函数用于对设备环境进行创建、删除或获取信息。 ? ? ? 问:DC,CDC,HDC,CClientDC....有什么本质的区别? ? 答:都是DC嘛,HDC就是最原始的 DC 句柄,很多API的第一个参数就是一个HDC类型,比如 HDC hDC = ::GetDC( m_hWnd); ::MoveToEx( hDC, 0, 0, NULL ); ::LineTo( hDC, 0, 100, ); ::ReleaseDC( m_hWnd, hDC ); ? 在MFC中,为了将API封装成一个类来操作,因此多出来了一个CDC。所以在MFC中,都是 CDC dc = GetDC(); dc.MoveTo( 0, 0 ); dc.LineTo( 0, 100 ); this-ReleaseDC( dc ); ? 但这样还不够,因为 CDC还要你自己去释放,所有MFC中又多出来一个CClientDC, 这样你就可以这样了: CClientDC dc(this); dc.MoveTo( 0, 0 ); dc.LineTo( 0, 100 ); CClientDC的析构函数自己会释放自己。 ? DC不是什么对象,就是设备上下文的简称。 ? 与CClientDC一样,还有CWindowDC,CPaintDC,只是它们的绘制范围不一样。 ? 但弄到底,都只是HDC的一些封装而已,你可以在CDC类中直接引用 m_hDC,这就是那个原始的HDC句柄了。 ? CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型. MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读/写代码的好的习惯. CDC中所有MFC的DC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派生类). CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;即HDC类型的句柄. 记住下面的一句话,会有助于你的理解. MFC的类,是在用window API语句开发出来的有一定功能的小程序.(也可称为类).使用它的默认方法,就是,记住它的名字与参数(可以用笔记,代替脑记). 如果将window api比做汇编语言 那么MFC就相当于Basic语言. ? ? ? 下面介绍Vc中最重要的部分--MFC ? CWnd:窗口,它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。该类很大,一开始也不必学,知道就行了。 ? CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写) ? CView视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。你自己的许多功能都要加在里面,你打交道最多的就是它。 ? CDC设备文本。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GD

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档