永发信息网

CClientDC dc(this);语句中的dc是自己定义的还是CClientDC中本就定义好的成

答案:2  悬赏:10  手机版
解决时间 2021-02-07 08:52
CClientDC dc(this);语句中的dc是自己定义的还是CClientDC中本就定义好的成
最佳答案
CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别 1、 设备环境(DC) (1)在Windows中,显示工作是基于设备环境的.所谓设备环境(DC)是一种Windows数据结构,该结构包含应用程序设备输出时所需要的信息.(2)在使用任何绘图函数之前必须建立一个设备环境对象.(3)在Visual C++ 6.0的MFC中提供了设备环境类CDC,它封装了绘图所需要的所有函数,其中包括了大多数的Windows API中的GDI函数.2、 设备环境类2.1.CDC类(1)CDC类是CObject类的派生类,也是所有设备环境类的基类.CDC类定义了一个设备描述对象,并提供了对设备描述对象进行操作的成员函数以及对与窗口客户区有关的显示区进行操作的成员函数. (2)CDC类提供的成员函数可以用于操作设备描述对象、使用绘图工具、选择图形设备界面,以及操作颜色和调色板,还用于取得和设置绘图属性、映射方式、视图和窗口范围的操作、坐标的转换、区域的使用、剪取、画线以及绘制图形和文字等操作.2.2.CPaintDC类(1)CPaintDC类是CDC类的一个派生类,该类一般用在响应WM_PAINT消息的函数OnPaint()中.(2)WM_PAINT消息是当窗口的某个区域需要重画时激发的窗口消息.当程序中的消息循环接到WM_PAINT消息时就自动调用消息处理函数OnPaint(),如果在OnPaint函数内定义了CPaintDC类的对象,通过这个类对象就可以使用CDC类的成员函数完成视图客户区中的图形绘制操作.(3)CPaintDC用于响应窗口重绘消息(WM_PAINT)时的绘图输出.CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用EndPaint()释放设备上下文.EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息.因此,在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画.CPaintDC也只能用在WM_PAINT消息处理之中.2.3.CClientDC类CClientDC类也是CDC类的派生类.它只能在窗口的客户区(即窗口中除了边框、标题栏、菜单栏以及状态栏外的中间部分)中进行绘图,坐标点(0,0)通常指的是客户区的左上角.它的构造函数调用GegDC函数,而析构函数调用ReleaseDC函数.CClientDC(客户区设备上下文)用于客户区的输出,它在构造函数中封装了GetDC(),在析构函数中封装了ReleaseDC()函数.一般在响应非窗口重画消息(如键盘输入时绘制文本、鼠标绘图)绘图时要用到它.用法是:CClientDC dc(this);//this一般指向本窗口或当前活动视图dc.TextOut(10,10,str,str.GetLength());//利用dc输出文本,如果是在CScrollView中使用,还要注意调用OnPrepareDC(&dc)调整设备上下文的坐标.2.4.CWindowDC类CWindowDC类也是CDC类的派生类.其成员函数可以在窗口的客户区和非客户区(即窗口的边框、标题栏、菜单栏以及状态栏)中绘图,坐标点(0,0)是指整个屏幕的左上角.同CClientDC类一样,它的构造函数调用GegDC函数,而析构函数调用ReleaseDC函数.2.5.CMdtaFileDC类CMetaFileDC类提供了一个面向Windows图元文件的设备环境,封装了在一个Windows图元文件中绘图的方法.图元文件是一个与设备无关的图片的集合,由于它对图像的保存比像素更精确,因而往往在要求较高的场合下使用,例如AutoCAD的图形保存等.3、几个设备环境类的主要差别3.1.CWindowDC类与CPaintDC 、CClientDC类的区别其区别主要有以下两个方面:(1)用CPaintDC 和CClientDC类的对象绘制图形时,绘制区只能在客户区,而不能在非客户区;而CwindowDC类既可以在窗口的客户区也可以在非客户区进行图形绘制.(2)在CWindowDC绘图类下,坐标系是建立在整个屏幕上的,在像素坐标方式下,坐标原点在屏幕的左上角;而在CPaintDC和CClientDC绘图类下,坐标系是建立在客户区上的,在像素坐标方式下,坐标原点在客户区的左上角.3.2.CPaintDC类与CClientDC类的区别CPaintDC类的对象应用在OnPaint函数中,以响应Windows的WM_PAINT消息;而CClientDC类的对象应用在非响应消息WM_PAINT的情况下.CPaintDC类响应WM_PAINT消息,并自动完成绘制,这对维护图形的完整性有着重要的作用.CClientDC类可以实时地将图形绘制到屏幕上,不需要重画;而如果用CPaintDC类的对象完成同样的工
全部回答
这个问题的回答的对
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有赞支付和微信支付有区别吗
世华水岸C区西门我想知道这个在什么地方
QQ收藏删掉了能不能找回啊
驴板肠煮出来有臭味怎么回事
【级别的英文】洁净级别英文如何表示?洁净级
c# 对指定路径执行dos命令
曼庄怎么去啊,有知道地址的么
怎样查询接收下来的门面店水电费是否交齐?谢
柜台办理信用卡申请下来可以去柜台领取吗
王志良诊所地址在哪,我要去那里办事
生育证明怎么开
湖南师范大学 通信工程.怎么样
广告学专业,上海师范大学和浙江工商大学哪所
上海银豹保险箱没电了怎么办
QQ附近的人怎么查找?邻居就住在隔壁都搜不到
推荐资讯
义乌市金华魏华宾馆在哪里啊,我有事要去这里
昌平区史各庄派出所地址在什么地方,想过去办
拉缪地址在哪,我要去那里办事
小孩升初中需要补课吗
从安阳到濮阳应该到哪个汽车站坐车
日照市宝晟物流有限公司地址在什么地方,我要
中国邮政(三坝邮政所)(棉橙街中国邮政)地址在
【印象派绘画】印象派绘画作品《青蛙塘》的作
如何能 人体产生的静电 通过某种仪器点亮小灯
西山区供销社东风马街综合服务社地址在什么地
动力先锋新悦网络地址在什么地方,我要处理点
学校大街/明星路(路口)在哪里啊,我有事要去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?