VC++中DC的概念
- 格式:doc
- 大小:52.00 KB
- 文档页数:6
dc名词解释DC是直流(Direct Current)的缩写,是一种电流方向始终保持不变的电能传输方式。
与之相对应的是交流(Alternating Current),交流电流的方向是周期性变化的。
直流是一种常用的电流类型,具有以下特点:1. 电流方向稳定:在直流中,电流的方向始终保持不变,从正极流向负极,电子沿着一个方向流动。
这使得直流电流在一些特定的应用领域中非常有用,如电池供电、太阳能发电、电动车等。
2. 电压波形稳定:直流的电压波形是一个恒定的直线,没有周期性的波动。
这使得电压的传输更加稳定可靠。
3. 电流大小不变:直流的电流大小不随时间变化,保持恒定的数值。
这使得直流电源可以提供稳定的电能给设备使用。
4. 电阻、电容对直流的影响:直流电在通过电阻时会产生电阻损耗,而经过电容时则会积累电荷。
这些特性需要在设计和使用直流电路时进行合理的考虑和控制。
直流广泛应用于不同领域,包括但不限于:1. 电源供应:很多电子设备都使用直流电源,如计算机、手机、家用电器等。
直流电源可以通过交流电源转换器获得,或者通过电池、太阳能电池板等直接获得。
2. 输电:在一些特定的情况下,直流电也用于长距离的输电。
例如,高压直流输电系统可以减少输电损耗,提高输电效率。
3. 汽车电路:现代汽车使用直流电作为动力源,供应电池、点火系统和其他电子设备。
电动汽车更是直接使用直流电作为驱动力。
4. 太阳能发电:太阳能电池板可以将太阳能转换为直流电。
直流电能方便储存和使用,因此广泛应用于太阳能发电系统中。
总之,直流是一种电能传输方式,其方向恒定、波形稳定且大小不变。
它在电子设备供电、输电和其他领域具有重要的应用价值。
随着科技的发展和能源需求的变化,直流技术的应用也在不断增加和拓展。
DC 即Device Context,是GDI内部的一个资料结构,一个DC会和某个特定的显示设备(如打印机、屏幕等)产生关联。
我们如果能取得该DC的handle 那我们便可以在这显示设备上写字、画图。
在Form 或Picturebox中都有一个hdc的属性,指的便是这东西,但是,怎麽又会有一个Memory DC呢?这是一个存在记忆体内的dc ,它除了不像form picturebox能将图形、文字显示出来之外,其他的几乎都相同,它也可以用在所有的GDI API 呼叫之上,其实我们在VB中早就有使用上这Memory DC 了,只是没有自觉。
当我们设form picturebox的AutoRedraw = True时,hdc所指的便是Momoory DC,这时我们在其上作绘图动作,都没有显示在form上,这便是先前说的,它只是在记忆体中,不会真的画出图。
而我们下r efresh指令时,便是将这MemoryDC上的图,copy到form/Picture Box上。
另外我们也可以使用CreateCompatibleDC() API 它传入一个h Dc ,代表产生的Memory DC和hdc相容,若传0则是与屏幕相容的Memory DC hMemDC = CreateCompatibleDC(0)这时候,该hMemDC所指的绘图区有多大呢?其实只有一个单色Pixel,直到我们使用SelectObject( hMemDC, hBitmap)那hMemDC显示区就会有和hBitmap一样的宽度、高度、颜色选择等。
而且我们在hMemDC上的任何绘图,也都会反映在hBit Map上,也就是说,原本hBitMap所指的图,在SelectObject(hMe mDC, hBitMap)后,我们使用gdi函式在hMemDC上画一条线,那么该hBitmap所指的图也会有一条线了。
那么Memory DC又有什么作用呢?我们知道,在使用VC开发图形相关的应用程序时,常常需要使用MFC的CDC类直接把图形画在窗口上。
VC中CDC、HDC、pDC区别与联系及相互转换1.CDC *pDC和HDC hdc有什么不同,类似的有CWnd *pWnd和HWnd?pDC是类指针HDC是windows句柄通过pDC获得hdc:HDC hdc=pDC->GetSafeHdc();通过hdc获得pDC:CDC *pDC=new CDC;pDC->Attach(hdc);2.hDC和CDC有本质区别HDC是WINDOWS的⼀种数据类型,是设备描述句柄。
⽽CDC是MFC⾥的⼀个类,它封装了⼏乎所有的关于HDC的操作。
也可以这样说,HDC定义的变量指向⼀块内存,这内存⽤来描述⼀个设备的相关的内容,所以也可以认为HDC定义的是⼀个指针;⽽CDC类定义⼀个对象,这个对象拥有HDC定义的⼀个设备描述表,同时也包含与HDC相关的操作的函数。
这与HPEN 和CPen,POINT与CPoint之间的差别是⼀样的。
CDC是对hDC的相关操作进⾏封装,例如CDC的⼀个TextOut函数隐去其错误检测,完全可以简化到这样程度CDC:TextOut( int x, int y, const CString& str ){TextOut( m_hDC, x, y, (LPCTSTR)str, str.GetLength() );}m_hDC就是CDC的成员变量HDC m_hDC;CDC有⼀个operator HDC() const { return m_hDC; }你可以把它当成⼀个HDC使⽤3.this是dc输出⽬标窗⼝的指针,通过它可以得到窗⼝句柄,对象带参构造这有什么奇怪的呢?CPaintDC ⽆效区dc,相当于BeginPaint, EndPaintCClientDC 客户区dc,相当于GetDC, ReleaseDCCWindowDC 整窗⼝dc, 相当于GetWindowDC, ReleaseDCCDC 任何dc, 相当于CreateDC, DeleteDC四、区别与联系HDC是句柄;CDC是MFC封装的Windows 设备相关的⼀个类;CClientDC是CDC的衍⽣类,产⽣对应于Windows客户区的对象HDC是WINDOWS的⼀种数据类型,是设备描述句柄。
VC绘图各种DC之间的区别和⽤法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消息⽆法从消息队列中清除,将引起不断的窗⼝重画。
45度倒角刀切削参数
我们要找出45度倒角刀的切削参数。
首先,我们需要了解切削参数的基本概念和计算方法。
切削参数通常包括切削速度(Vc)、进给速度(F)和切削深度(Ap)等。
这些参数的选择会影响到切削效率、刀具寿命和加工质量。
对于45度倒角刀,其切削参数的计算方式可能会因刀具和加工条件的不同
而有所差异。
但通常,我们可以根据以下经验公式进行估算:
1. 切削速度(Vc):Vc = (60 × Dc × N) / (π × T)
2. 进给速度(F):F = (Dc × N) / (π × T)
3. 切削深度(Ap):Ap = (Dc × T) / 2
其中,Dc是刀具直径,N是主轴转速,T是刀具的刃数。
为了简化问题,我们假设刀具直径Dc为10mm,主轴转速N为1000rpm,刀具刃数T为2。
将这些值代入上述公式,即可求出45度倒角刀的切削参数。
计算结果为:切削速度Vc = mm/min, 进给速度F = mm/min, 切削深度Ap = 10 mm。
所以,对于45度倒角刀,其切削参数为:切削速度Vc = mm/min, 进给速度F = mm/min, 切削深度Ap = 10 mm。
第一章基本概念1.1 启动文件启动文件用来指定综合工具所需要的一些初始化信息。
DC使用名为“.synopsys_dc.setup”的启动文件,启动时,DC会以下述顺序搜索并装载相应目录下的启动文件:1)、DC的安装目录;2)、用户的home目录;3)、当前启动目录。
注意:后装载的启动文件中的设置将覆盖先装载的启动文件中的相同设置。
下面是一个DC启动文件的实例,它包含了几乎所有重要的设置,下文将结合该实例解释启动文件中各项设置的具体含义。
例1-1(一个DC启动文件):search_path= search_path + {“.”, synopsys_root + “/dw/sim_ver” }search_path= search_path + { “~/risc32/synthesis/libraries” }target_library={ tcb773stc.db }synthetic_library={dw_foundation.sldb}link_library = { “*”, dw_foundation.sldb, tcb773stc.db }symbol_library = { tcb773s.sdb }synlib_wait_for_design_license = {"DesignWare-Foundation"}alias rt “report_timing”designer= XXXXXcompany= “ASIC Lab, Fudan Univ.”z search_path指定了综合工具的搜索路径。
z target_library为综合的目标库,它一般是由生产线提供的工艺相关的库。
z synthetic_library是综合库,它包含了一些可综合的与工艺无关的IP。
dw_foundation.sldb 是Synopsys提供的名为Design Ware的综合库,它包含了基本的算术运算逻辑、控制逻辑、可综合存储器等IP,在综合是调用这些IP有助于提高电路性能和减少综合时间。
VC中跟绘图有关的HDC、CDC、ClientDC、WindowsDC区别
一般在绘制图形或文字时需要GDI(graph device interface 图形设备接口)函数和DC,GDI提供绘制的动作,如画线、矩形、园等,而DC提供绘制使用的材料和工具,具体如颜色、画笔、画刷等。
DC device context 设备环境的英文缩写,在绘制图形、文字等之前使用的画布、画笔、画刷的环境。
HDC是DC的最原始句柄
CDC在MFC中将DC封装成一个类才操作,需要自己释放
CClientDC解决CDC需要自己释放问题而封装的类,窗口客户区可以让开发者
访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC:一般指向本窗口或当前活动视图;用法是:CClientDC dc(this); CWindowDC在全屏幕绘图封装的类
CPaintDC只响应WM_PAINT消息的DC,BeginPaint()取得设备上下文,在析构函数中调用EndPaint()释放设备上下文。
EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。
VC++显⽰图像的⼏种⽅法及获取DC的⽅法⼀、获取DC⽅法为了进⾏绘图,必须获得⼀个设备描述表DC。
有多种⽅式获得DC:1、利⽤windows SDK全局函数获得HDC hdc;Hdc=::GetDC(m_hWnd);…::ReleaseDC(m_hWnd,hdc);2、利⽤MFC的CDC封装类实现CDC *pDC=GetDC();…ReleaseDC(pDC);3、利⽤MFC的CClientDC类实现,此类派⽣于CDC类,并在构造函数中调⽤GetDC,在析构函数中调⽤ReleaseDC。
CClientDC dc(this);This指针代表CClientDC对象所属的类对象,如视图类CXXView⼆、有多种⽅法实现在窗⼝中显⽰位图:1、BitBlt函数和StretchBlt函数(属于CDC类)(1)创建位图CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP); //加载应⽤程序中的资源位图(2)创建兼容DCCDC dcCompatible; dcCompatible.CreateCompatibleDC(pDC);(3)将位图选⼊兼容DC中dcCompatible.SelectObject(&bitmap);(4)将兼容DC中的位图贴到当前DC中pDC->BitBlt(rect.left,rect.top,rect.width,rect.height,&dcCompatible,0,0,SRCCOPY);BOOL BitBlt(int x,int y,int nWidth,int nHeight,CDC *pSrcDC,int xSrc,int ySrc,DWORD dwRop);x和y指定⽬标矩形左上⾓的坐标。
nWidth,nHeight指定⽬标矩形区域宽度和⾼度。
xSrc和ySrc指定源矩形区域左上⾓的x和y坐标。
得到rect GetClientRect(&rect);BOOL StretchBlt(int x,int y,int nWidth,int nHeight,CDC *pSrcDC,int xSrc,int ySrc,int nSrcWidth,intnSrcHeight,DWORD dwRop);StretchBlt函数⽐BitBlt函数多了两个参数nSrcWidth和nSrcHeight,表⽰原矩形的宽度和⾼度。
对Windows程序中设备上下文DC(device context)的理解:DC实际上是GDI内部保存的数据结构。
DC与特定的显示设备(如显示器或打印机)相关。
对于显示器,DC总是与显示器上的特定视窗相关。
DC中的有些值是图形「属性」,这些属性定义了GDI绘图函数工作的细节。
例如,对於TextOut,DC的属性确定了文字的颜色、文字的背景色、x座标和y座标映射到视窗的显示区域的方式,以及显示文字时Windows使用的字体。
MSDN的解释: 一个DC是一个结构,它定义了一系列图形对象的集合以及它们相关的属性,以及影响输出效果的一些图形模式。
这些图形对象包括一个画线的笔,一个填充和painting的画刷,一个用来向屏幕拷贝的位图,一个定义了一系列颜色集合的调色板,一个用来剪裁等操作的区域,一个做painting和drawing操作的路径。
一个应用程序从不直接地访问(access)dc,常见的取得dc的方式有以下几种:SDK's way:1. BeginPaintcase WM_PAINT: HDC hdc = BeginPaint(hwnd, &ps); EndPaint(hwnd, &ps); MSDN的解释: BeginPaint函数自动地设置dc的剪裁区域,这个剪裁区域,剪裁的是由Inv alidateRect 或InvalidateRgn 函数触发的窗口无效区域,或者是系统给出的无效区域,当窗口被sizing, moving, creating, scrolling, or any other operation that affects the client area.一个应用程序从不调用BeginPaint,除了在收到一个WM_PAINT消息的时候;每一BeginP aint调用之后,需要调用EndPaint函数。
2.GetXXXDCGetDC取得与窗口客户区相关的dc,GetWindowDC取得与整个窗口(包括客户区和非客户区)相关的dc。
各大主机厂整车开发流程解析(附:采购和主机厂打交道不可不知的英文缩写(通用篇))汽车(整车、零部件)的开发是相当复杂的项目工程,众所周知,项目的三要素:时间、质量与成本,那么如何在大量的设计和验证过程中保证项目质量的同时,确保项目进度?每家公司都有自己的项目管理方式,今天梳理几家OEM的项目管理流程供大家参考。
所有汽车新项目的开发和管理,都会把质量放在第一,质量广义上代表一种能力,包含了一家品牌汽车厂的制造能力、管理能力、研发能力与业务能力,其实统统都可以叫质量能力,汽车行业内部称之为新项目流程管理和开发,这个流程和汽车最终成品下线的整体质量息息相关。
大众集团大众集团对于新项目的开发流程就如上图所示,整个项目节点划分非常细,其中最关键点分别是:PF项目确认、B认可、0S零批量以及SOP量产。
B认可后,所有零部件供应商必须要进行开模,相当于实物制造启动指令;0S交样也是大众非常关键的一点,这个时候大众质保部门会全力介入,比如产线试装、各路况路试、供应商首批样件检验和认可,供应商产能评审2TP等等。
沃尔沃沃尔沃的节点名称和描述较大众而言更为详细,造车理念也是贯彻了欧洲人的精细,有意思的是,沃尔沃在MP1批量投产后,会进行为期6个月的量产全检,用通用体系的术语叫GP12,GP12全检对新项目刚投产的质量不稳定现象能够有效防范和隔离。
日产日产的流程是分为从Phase1~Phase5,初看让人觉得日系的项目很简单,其实只是化繁为简,可以看看图二,每个阶段中有小的任务和里程碑,只有将所有任务验证完成并且合格,才能进入到下一个大阶段,其中一些关键字:1、VC lot代表试装样件,主机厂试验和实车试装;2、PT1预批量生产,需要完成量产流程和产品尺寸过程能力验证;3、PT2预批量生产,需要完成制造过程能力审核;日系这种地图指导式的项目开发流程,让人觉得非常可靠,一环扣一环的感觉。
通用通用汽车是贯彻先期质量策划的先驱,其流程和体系被业界广为效仿,甚至很多零部件供应商直接照搬通用的流程体系,这个流程对于文件、订单方式、造车区域有了明确的定义,让初学者和新手可以一目了然,正式物流订单分为小批量、中批量、大批量。
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中最重要的部分--MFCCWnd:窗口,它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。
该类很大,一开始也不必学,知道就行了。
CDocument文档,负责内存数据与磁盘的交互。
最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)CView视图,负责内存数据与用户的交互。
包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。
最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。
另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。
你自己的许多功能都要加在里面,你打交道最多的就是它。
CDC设备文本。
无论是显示器还是打印机,都是画图给用户看。
这图就抽象为CDC。
CDC 与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。
把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。
CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。
CDialog对话框CWinApp应用程序类。
似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。
最常用函数InitInstance():初始化。
CGdiObject及子类,用于向设备文本画图。
它们都需要在使用前选进DC。
CPen笔,画线CBrush刷子,填充CFont字体,控制文字输出的字体CBitmap位图CPalette调色板CRgn区域,指定一块区域可以用于做特殊处理。
CFile文件。
最重要的不外是Open(打开),Read(读入),Write(写)CString字符串。
封装了C中的字符数组,非常实用。
CPoint点,就是(x, y)对CRect矩形,就是(left, top, right, bottom)CSize大小,就是(cx, cy)对(宽、高)Windows使用与设备无关的图形设备环境(DC: Device Context) 进行显示。
MFC基础类库定义了设备环境对象类----CDC类。
CDC与CGdiObject的关系说到CDC类就不能不提一下GdiObject---图形对象类。
在Windows应用程序中,设备环境与图形对象共同工作,协同完成绘图显示工作。
就像画家绘画一样,设备环境好比是画家的画布,图形对象好比是画家的画笔。
用画笔在画布上绘画,不同的画笔将画出不同的画来。
选择合适的图形对象和绘图对象,才能按照要求完成绘图任务。
有关CDC类的继承父类:从CObject 直接继承而来。
继承了CObject类的各种特性,如动态创建等等。
子类:CClientDC-------代表操作窗口的DC ,是比较常用的一个子类CMetaFileDC ------响应Meta File的DC ,Meta File是一些GDI消息。
CPaintDC-------响应WM_PAINT消息的DC。
CWindowDC ------代表整个屏幕的DCCDC类的数据成员数据成员只有两个:HDC m_hDC : CDC对象使用的输出设备上下文HDC m_hAttribDC : CDC对象使用的属性设备上下文二者在CDC对象创建时指向相同的设备上下文。
问:VC 解释一下CDC *pDC=pWnd->GetDC();答:绘图用到的所有有关的类与函数都被集合到一起,被称之为设备上下文,或设备环境。
你可以将这个类集看成一个超级的大类。
GetDC()是一个函数,它能获得DC的使用权,也就是说它将句柄(或指针)交给了你,也就是说它将使用它的钥匙交给了你。
你可以使用它的所有函数了。
不用再向API函数那样,每一个绘图动作都要使用一个函数,如果你不想改变它的默认值,可以直接绘图,当然,他提供了比API更加强大的函数与更加多的功能。
当然,对初学者,最方便的是,不用记大量的函数了,当你用它实例化一个对象后(也称得到设备上下文(DC)),你只要用->或.就可以在VC提示的帮助下来选择相应的函数了。
CDC *pDC=pWnd->GetDC();1.用CDC(MFC的设备上下文)实例化一个对象的指针2.为这个对象的指针赋值为pWnd3.pWnd被赋值为GetDC.相当于用API的DC实例化一个对象的指针pWnd小结:用MFC的设备上下文实列化一个指针的对象,这个指针对象的值来源于API的设备上下文实例化。
==============实际上,MFC的大多数调用的函数,最终调用的都是API里的相应的函数问:VC++中绘图用到的this->GetDC()函数是什么作用?还有this->ReleaseDC(pDC) 答:1、this指针是当前类的对象的指针.它指向类实例化后的对象.它是隐含的指针.每个对象都有一个,使用它方便呀,不用自已再定义指针了.--------------------------------------2、this->GetDC();得到DC,相当于CDC *pDC;pDC->GetDC();也相当于CDC dc;dc.GetDC();-----------------------------------3、this->ReleaseDC()是释放DC------------------------------------4、DC的常被称为设备上下文,或设备环境.它是一个超大的类或函数的集合.它集合了,所有的绘图,打印,等相关的类及函数.你只要声明了它的对象或指针,你就得到了它的所有类及函数的使用权.象画笔,画刷,位图,绘图函数....等等全部的功能.你只要用/dc./this->/pDC->等方式就可以直接调用它的函数了.CClientDC类CClientDC派生于CDC,在构造时调用了Windows函数GetDC,在析构时调用了ReleaseDC。
这意味着和CClientDC对象相关的设备上下文是窗口的客户区。
几种DC及区别CClientDC:(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC: 用法是:CClientDC dc(this);//this一般指向本窗口或当前活动视图dc.TextOut(10,10,str,str.GetLength());//利用dc输出文本,如果是在CScrollView中使用,还要注意调用OnPrepareDC(&dc)调整设备上下文的坐标。
CPaintDC用于响应窗口重绘消息(WM_PAINT)时的绘图输出。
CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用EndPaint()释放设备上下文。
EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。