MFC 多次调用StretchDIBits 句柄无效 10C

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

4个回答

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

crzmy
Royn1994 是在主窗口类中定义的CWND,没有销毁过
接近 2 年之前 回复
xingjianfengaa
xingjianfengaa 回复crzmy: 定时器就是多线程,会不会你的定时器在100ms内没有画完,然后一下积累了n个线程然后出的错
接近 2 年之前 回复
crzmy
Royn1994 句柄在主窗口的类中定义,在OnInitDialog中new,刚开始创建成功了,传入也成功了。后来过一段时间,句柄就无效了。
接近 2 年之前 回复

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

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

是不是GDI资源泄露了??

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐