大家好。我是菜鸟.
我在做一个对话框,实现绘图功能,自己新建了一个类Drawdata,该类中有公共变量CWnd *ddwnd,CDC memdc,bkdc
和操作函数SetPic(int nlDDlgltem),Draw()函数
SetPic函数中使用了语句:ddwnd=GetDlgItem(nlDDlgltem);
Draw函数中有语句:memDC.BitBlt(rect.left,rect.top,rect.right,rect.bottom,&bkDC)0,0,SRCCOPY);
问题一:我在对话框类头文件中定义了该类的变量,但是在对话框的某个控件函数中调用SetPic(IDC_PIC1)时运行到ddwnd=GetDlgItem(nlDDlgltem);弹出错误,调试发现好像是值没有传递进去导致内存泄露。
问题二:在程序运行Draw函数的memDC.BitBlt(rect.left,rect.top,rect.right,rect.bottom,&bkDC)0,0,SRCCOPY);处时也出现类似错误,调试发现好像&bkDC没有传递进去(bkDC前面已经完成了背景绘图)。
希望各位大侠帮帮忙。

解决方案 »

  1.   

    Drawdata是派生对话框的还是单独一个类?
      

  2.   

    您好,Drawdata是一个继承CWnd的派生类
      

  3.   

    SetPic(IDC_PIC1)
    这个资源不属于Drawdata所在的类,应该先加载资源,然后把句柄传过去问题二
    memDC.BitBlt
    不要使用资源,因为不是在类所在的窗口绘画,用句柄,窗口的句柄
      

  4.   


    谢谢。问题解决了。
    还有个问题要问大神
    我继承了一个CStatic类,这个类主要是用来实现Picture控件功能,而且是动态创建的。
    现在需要在双击该Picture时,弹出非模态对话框SetPictureDialog来设定参数。因此用到Dialog类的Create函数,该函数需要CWnd *pParent作为参数。可是CStatic类如何得到自身的CWnd类句柄呢?(这个CStatic是动态创建的).谢谢
      

  5.   

    SetPicDialog->Create(IDD_SETAXIS,this)
    如果用this作为参数传入的话,调试的时候显示该句柄为0x00000000
    SetPicDialog->Create(IDD_SETAXIS,this)