我需要用点来画曲线,2000~6000个点,但是画点的函数不在OnPaint()函数中
也就是pDC->SetPixel((int)x,(int)y,RGB(255,0,0));不在其中
我一调用 程序就崩溃了。
OnPaint()是在CMyDlg类中;Plot()函数在CMyDlg类中;pDC->SetPixel();在Plot()函数中。
Distill()函数在CReadFile类中。
------------------我在Distill()函数中调用pDC->SetPixel();两千到六千次。
调用就说遇到问题,需要关闭,和windows中程序崩溃一样的现象
在怎么回事呢?你们有这种情况吗?

解决方案 »

  1.   

    要是画点函数放在OnPaint()函数中我就不能定义读文件类CReadFile了,
    因为要把整个读文件的过程放在OnPaint()函数中里,那就等于是一个面向过程的程序了
    老师说了要有一个读文件的类来执行读操作
      

  2.   

    调用前确定pDC 是否正常( ==0 )
      

  3.   

    请问如何判断 pDC是否正常( ==0 )
    我不知道怎么验证,我程序中的pDC是一个CMyDlg类中的全局变量
      

  4.   

    既然是指针,通过判断是否为NULL即可。另外,很肯能是你的pDC没有初始化。SetPixel函数写像素速度太慢了,你调用这么多次,系统肯定受不了,我曾经调用过不到500次,就感觉机器明显慢了很多,以后就一直没有用过。如果你是绘画曲线,可以直接使用MoveTo和LineTo函数,曲线本身就是由直线组成的。
      

  5.   

    pDC->SetPixel((int)x,(int)y,RGB(255,0,0));==》
    CDC *pDC = GetDC();
    pDC->SetPixel((int)x,(int)y,RGB(255,0,0));
      

  6.   

    无论在哪个类中都能使用GetDC()吗
    我试了上面朋友的,可出现编译错误:
    error C2660: 'GetDC' : function does not take 0 parameters
      

  7.   

    GetDC()获得的指针可能是临时的,不能保存供将来使用吧
      

  8.   

    哈哈 刚刚可以
    是用了GetDC()  来传递一个指向设备的指针
    非常感谢各位的关注