void CXXXView::OnDraw(CDC* pDC)
{
CSpecAssistDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
绘制背景的函数
}这个绘制背景的函数(里面是pDC->MoveTo,LineTo等等一系列函数)可不可以做成全局函数在此调用呢?全局函数中使用的都是SDK的函数,pDC这个CDC类的指针怎么能在全局函数中来画图啊?
或者说各位大侠,要想把此绘制背景的函数做成全局函数应该怎么做呢?给个思路,谢谢
{
CSpecAssistDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
绘制背景的函数
}这个绘制背景的函数(里面是pDC->MoveTo,LineTo等等一系列函数)可不可以做成全局函数在此调用呢?全局函数中使用的都是SDK的函数,pDC这个CDC类的指针怎么能在全局函数中来画图啊?
或者说各位大侠,要想把此绘制背景的函数做成全局函数应该怎么做呢?给个思路,谢谢
======================================
可以,因为是全局函数,可能要用GetDC来获取HDC来操作,最好是写成CXXXView的成员函数,留一个pDC的参数作入口,可能要方便一点
谢谢,其中你说可能要用GetDC来获取HDC来操作,没错是这样子,但是这样一来的话,就和OnDraw里的pDC没什么关系了是吧?因为在OnDraw里画图,pDC=GetDC();而全局下变成了 HDC hDC=GetDC(NULL)了。这部就没用上pDC了。是这样吗??
定义一个全局函数image_draw(CDC *pDC, ***)在OnDraw里面直接调用即可,把那个DC指针传递下去
但是很多情况下,你需要对DC进行设置,诸如坐标模式,ViewPort之类的,很麻烦,GetDC()使能获取CDC指针,但只能获得一个原始的DC,并不一定是你要的,而在OnDraw里面传入的DC是已经经过一些处理的,可以直接使用,如果你想自己实现,完全可以吧View类的OnPaint给重载了,自己控制绘制