孙鑫的MFC第四章利用CDC类画线 有一行程序 CDC* pDC = GetDC() 问题如下
CDC*pDC=GetDC();//定义一个CDC类的指针pDC->MoveTo(m_ptOrigin);pDC->LineTo(point);ReleaseDC(pDC...
CDC* pDC = GetDC();//定义一个CDC类的指针
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);
程序的第一行 GetDC返回的是一个HDC类型的设备描述表的句柄 为什么可以直接赋值给CDC类型的指针呢 难道不需要强制转换吗?求高人指点 展开
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);
程序的第一行 GetDC返回的是一个HDC类型的设备描述表的句柄 为什么可以直接赋值给CDC类型的指针呢 难道不需要强制转换吗?求高人指点 展开
3个回答
展开全部
你查找的声明有误。
这不就是函数重载的例子吗。
HDC GetDC(HWND hWnd)是带一个参数的。
CDC* pDC = GetDC()这里的 GetDC()不带参数。
正确的声明是:
CDC* CWnd::GetDC() 。
这不就是函数重载的例子吗。
HDC GetDC(HWND hWnd)是带一个参数的。
CDC* pDC = GetDC()这里的 GetDC()不带参数。
正确的声明是:
CDC* CWnd::GetDC() 。
更多追问追答
追问
恩 这里的GetDC是CDC类的成员函数 不是API全局函数 但是我的问题是它的返回值 返回的是HDC类型 怎么赋值给CDC类型的指针呢?
追答
CDC* CWnd::GetDC() 。的返回值明显是CDC*类型的啊,赋值给CDC* pDC这不是刚好吗?
连基本的函数声明都不清楚,说了半天选了一个截图的,这种不是普通青年,不是文艺青年的某某青年还是回去跟着你妈妈再练几年再来提问吧!
你这种人就是浪费别人给你回答,祝你以后没人理你最好,笨的都不如pig
展开全部
这个的GetDC其实是this->GetDC()
而不是Windows API的GetDC
其实HDC也没法强制类型转换成CDC的
而不是Windows API的GetDC
其实HDC也没法强制类型转换成CDC的
更多追问追答
追问
查了MSDN GetDC的函数原型:HDC GetDC(HWND hWnd) 由函数原型可以看出它的返回值肯定是HDC类型的一个设备描述表的句柄变量 它的返回值和前面有没有this指针关系不大吧 即使有this返回值也应该是HDC类型的一个设备描述表的句柄呀
追答
CDC* CWnd::GetDC() 。
它的返回值就是 CDC的指针了。
MFC对大多数的API进行了包装,使得他们支持面向对象,而且包装后的函数的名称基本和原函数相同,但是变成了类的成员函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询