学习MFC的CDC类

void CMainWindow::OnLButtonDown (UINT,CPoint)
{
CDC*P=GetDC();
TextOut(P,0,0,L"ABC",3);
ReleaseDC(P);
} “TextOutW”: 不能将参数 1 从“CDC *”转换为“HDC”怎么使用输出啊

HDC hdc = P->GetSafeHdc(); 给你个文字看看吧 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语言.cdc是设备描述表的基类,clientDC指代客户区的设备描述表,PaintDC只用于OnPaint()函数中

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语言.

HDC是WINDOWS的一种数据类型,是设备描述句柄。 而CDC是MFC里的一个类,它封装了几乎所有的关于 HDC的操作。 也可以这样说,HDC定义的变量指向一块内存,这块 内存用来描述一个设备的相关的内容,所以也可以 认为HDC定义的是一个指针;而CDC类定义一个对象, 这个对象拥有HDC定义的一个设备描述表,同时也包 含与HDC相关的操作的函数。 这与HPEN和CPen,POINT与CPoint之间的差别是一样 的。
CDC 到HDC 的转化:2007-05-09 12:04方法一: 此方法在设备结束时不会销毁原来的资源(即:hDC,hBitmap)CDC *pDC = CDC::FromHandle(hDC);CBitmap *pBitmap = CBitmap::FromHandle(hBitmap);
方法二: 此方法在设备结束时会销毁原来的资源(即:hDC,hBitmap)CDC dc;dc.Attach(hDC);CBitmap bit;bit.Attach(hBitmap);
在结束的时候加dc.detach()也不会销毁原来资源
HDC hdc; CDC cdc; cdc到hdc hdc = cdc.GetSafeHdc(); hdc到cdc cdc.Attach(hdc);
回复于 2004-04-08 17:46:03 得分 20
HDC hdc; CDC cdc; cdc到hdc hdc = cdc.GetSafeHdc(); hdc到cdc cdc.Attach(hdc) 回复于 2004-04-08 17:49:14 得分 15
CDC 是MFC中的类 而HDC是Handle 使用 HDC GetDC()
回复于 2004-04-08 17:51:49 得分 0
CDC cdc; HDC hDC = cdc.m_hDC
回复于 2004-04-08 17:54:20 得分 20
CDC dc; HDC hDC = dc.m_hDC dc.FromHandle(hDC);
回复于 2004-04-08 18:01:51 得分 10
CDC to hdc 用成员变量m_hDC hdc to CDC 用FromHandle
回复于 2004-04-08 18:02:47 得分 10
dc.FromHandle(hDC)产生一个dc,但是是临时的,mfc不保证系统在什么时候删除dc. dc.Attach(hDC)是永久的,直到这个dc的生命正常结束。
回复于 2004-04-08 18:05:21 得分 5
以上的都很对。你就查找替换。将所有的(hdc,替换为pdc->(当然。前面声明个 pdc就可以了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-11
将TextOut(P,0,0,L"ABC",3); 修改为P->TextOut(0, 0, L"ABC", 3); 就可以了.. 这个函数是CDC类的一个成员函数,直接调用.本回答被网友采纳
相似回答