CPen pen(nLineStyle,nWidth,crColor);
CClientDC dc(this); //请尤其注意这里!!
CPen * pOldPen = dc.SelectObject(&pen);
dc.MoveTo(startPoint);
dc.LineTo(endPoint);
dc.SelectObject(pOldPen);
将上面这段代码放在CView类的OnLButtonUp函数里,测试,完全通过!能够画出线条出来.现在,我自己写了一个类,将上面代码封装起来,放在下面这个函数里,在然后到CView类的OnLButtonUp函数里调用我自己写的这个函数,可是我刚把我的类写好,还没有放到CView类的OnLButtonUp函数里,测试就意外出现了错误:
bool CMyLine::drawLine() //这里是我自己编写的一个类和画线的成员函数,
{
CPen pen(nLineStyle,nWidth,crColor);
CClientDC dc(this);//主要就是这一行:错误信息是:
//CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
CPen * pOldPen = dc.SelectObject(&pen);
dc.MoveTo(startPoint);
dc.LineTo(endPoint);
dc.SelectObject(pOldPen);
}
请大家帮我分析一下这是什么意思:
CClientDC dc(this);//主要就是这一行:错误信息是:
//CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
再次表示感谢!!!
8 个解决方案
#1
大家快帮帮我啊,555555555
#2
CClientDC dc(this)当然出错了,这里this指什么呢?在CView中this指CView类的实例,是可以的,而在你自己的类中,this指的是你自己这个类的实例,当然不行了。
#3
CClientDC 是MFC定义一个类,它的构造函数需要一个参数,参数是CWnd型指针。所以你的做法出错了。
#4
CClientDC dc(this)当然出错了,这里this指什么呢?在CView中this指CView类的实例,是可以的,而在你自己的类中,this指的是你自己这个类的实例,当然不行了。
==============================================
楼上说的对啊
你可以这样实现
在你的函数里设个参数
bool CMyLine::drawLine(CDC* pDC)
在调用的时候这样用
CDC*pDC=GetDC()
myline.drawline(pDC);
==============================================
楼上说的对啊
你可以这样实现
在你的函数里设个参数
bool CMyLine::drawLine(CDC* pDC)
在调用的时候这样用
CDC*pDC=GetDC()
myline.drawline(pDC);
#5
楼上的兄弟,我按照你说的修改了,可是还是有这样的错误:
bool MyLine::drawLine(CDC *pdc)
{
....
CClientDC dc(pDC);////CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
...
}
我估计是因为CClientDC的构造函数里的参数是因为需要CWnd指针,而不是CDC类指针,所以发生了错误,各位大虾快帮我啊!怎么将CDC类指针转化为CWnd指针?
bool MyLine::drawLine(CDC *pdc)
{
....
CClientDC dc(pDC);////CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
...
}
我估计是因为CClientDC的构造函数里的参数是因为需要CWnd指针,而不是CDC类指针,所以发生了错误,各位大虾快帮我啊!怎么将CDC类指针转化为CWnd指针?
#6
你的MyLine 不是从CWnd继承下来的,
bool MyLine::drawLine(CDC *pdc)传入 pdc ,
已经得到画图dc了, 还要再定义一个CClientDC dc做什么?
直接用得到的pdc开始画,pdc->LineTo(...).....
bool MyLine::drawLine(CDC *pdc)传入 pdc ,
已经得到画图dc了, 还要再定义一个CClientDC dc做什么?
直接用得到的pdc开始画,pdc->LineTo(...).....
#7
楼上真是高手,佩服!
一修改,就通过!
听君一席话,胜读十年书!
谢谢!
一修改,就通过!
听君一席话,胜读十年书!
谢谢!
#8
楼上的兄弟,我按照你说的修改了,可是还是有这样的错误:
bool MyLine::drawLine(CDC *pdc)
{
....
CClientDC dc(pDC);////CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
...
}
我估计是因为CClientDC的构造函数里的参数是因为需要CWnd指针,而不是CDC类指针,所以发生了错误,各位大虾快帮我啊!怎么将CDC类指针转化为CWnd指针?
======================================
是我没说明白 seu07201213解答很详细了
我所说的调用是你调用该drawline函数的时候,比如在lbuttonup里边。
bool MyLine::drawLine(CDC *pdc)
{
....
CClientDC dc(pDC);////CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
...
}
我估计是因为CClientDC的构造函数里的参数是因为需要CWnd指针,而不是CDC类指针,所以发生了错误,各位大虾快帮我啊!怎么将CDC类指针转化为CWnd指针?
======================================
是我没说明白 seu07201213解答很详细了
我所说的调用是你调用该drawline函数的时候,比如在lbuttonup里边。
#1
大家快帮帮我啊,555555555
#2
CClientDC dc(this)当然出错了,这里this指什么呢?在CView中this指CView类的实例,是可以的,而在你自己的类中,this指的是你自己这个类的实例,当然不行了。
#3
CClientDC 是MFC定义一个类,它的构造函数需要一个参数,参数是CWnd型指针。所以你的做法出错了。
#4
CClientDC dc(this)当然出错了,这里this指什么呢?在CView中this指CView类的实例,是可以的,而在你自己的类中,this指的是你自己这个类的实例,当然不行了。
==============================================
楼上说的对啊
你可以这样实现
在你的函数里设个参数
bool CMyLine::drawLine(CDC* pDC)
在调用的时候这样用
CDC*pDC=GetDC()
myline.drawline(pDC);
==============================================
楼上说的对啊
你可以这样实现
在你的函数里设个参数
bool CMyLine::drawLine(CDC* pDC)
在调用的时候这样用
CDC*pDC=GetDC()
myline.drawline(pDC);
#5
楼上的兄弟,我按照你说的修改了,可是还是有这样的错误:
bool MyLine::drawLine(CDC *pdc)
{
....
CClientDC dc(pDC);////CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
...
}
我估计是因为CClientDC的构造函数里的参数是因为需要CWnd指针,而不是CDC类指针,所以发生了错误,各位大虾快帮我啊!怎么将CDC类指针转化为CWnd指针?
bool MyLine::drawLine(CDC *pdc)
{
....
CClientDC dc(pDC);////CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
...
}
我估计是因为CClientDC的构造函数里的参数是因为需要CWnd指针,而不是CDC类指针,所以发生了错误,各位大虾快帮我啊!怎么将CDC类指针转化为CWnd指针?
#6
你的MyLine 不是从CWnd继承下来的,
bool MyLine::drawLine(CDC *pdc)传入 pdc ,
已经得到画图dc了, 还要再定义一个CClientDC dc做什么?
直接用得到的pdc开始画,pdc->LineTo(...).....
bool MyLine::drawLine(CDC *pdc)传入 pdc ,
已经得到画图dc了, 还要再定义一个CClientDC dc做什么?
直接用得到的pdc开始画,pdc->LineTo(...).....
#7
楼上真是高手,佩服!
一修改,就通过!
听君一席话,胜读十年书!
谢谢!
一修改,就通过!
听君一席话,胜读十年书!
谢谢!
#8
楼上的兄弟,我按照你说的修改了,可是还是有这样的错误:
bool MyLine::drawLine(CDC *pdc)
{
....
CClientDC dc(pDC);////CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
...
}
我估计是因为CClientDC的构造函数里的参数是因为需要CWnd指针,而不是CDC类指针,所以发生了错误,各位大虾快帮我啊!怎么将CDC类指针转化为CWnd指针?
======================================
是我没说明白 seu07201213解答很详细了
我所说的调用是你调用该drawline函数的时候,比如在lbuttonup里边。
bool MyLine::drawLine(CDC *pdc)
{
....
CClientDC dc(pDC);////CClientDC::CClientDC :cannot convert parameter 1 from 'class CMyLine *const ' to 'class CWnd*'
...
}
我估计是因为CClientDC的构造函数里的参数是因为需要CWnd指针,而不是CDC类指针,所以发生了错误,各位大虾快帮我啊!怎么将CDC类指针转化为CWnd指针?
======================================
是我没说明白 seu07201213解答很详细了
我所说的调用是你调用该drawline函数的时候,比如在lbuttonup里边。