MFC 多次调用StretchDIBits 句柄无效

我有两个类,一个主窗口类,一个画图类。画图类根据主窗口类传进来的CWnd使用StretchDIBits进行绘图。
在主窗口中使用100ms定时器,不断调用画图类的Show()方法(在CWnd指向的PictureControl进行绘图 )。
一段时间内都正常,过一段时间后,StretchDIBits返回0,GetLastError() = 6,CWnd->m_hWnd 为???。
然后对话框就死了,但定时器还能进,画图方法还一直运行,只是StretchDIBits返回0.

是不是GDI资源泄露了??

你的句柄CWND是哪来的,新建的?之后有销毁吗,mfc中窗口过多时就会创建失败,m_hwnd=0x0000000

句柄在主窗口的类中定义,在OnInitDialog中new,刚开始创建成功了,传入也成功了。后来过一段时间,句柄就无效了。

架设主类为A 画图子窗口类为B
子窗口类获取主窗口句柄 可以直接这样 试试 A *p = (A *)AfxGetApp()->AfxGetMainWnd();