这个问题我以前回答过的,注意CWnd及其派生类不能在另外的线程中使用的。具体原理MSJ的97年有篇文章里讲过。
解决方案 »
- 在DirectX8.1下用DialogBox在当前窗口弹出对话框(则后台工作停止),要如何解决啊??????????????????????超急,马上解决,立刻给分
- 请问什么是overlay啊
- 简单问题,散分!
- 请问怎么找直方图的波谷
- 小问题
- 连接WEB服务器都正常,但是就是返回400的错误
- abc_rain() 对不起 没给你分数。。。
- 请问有没有与GetClipBox函数对应的SetClipBox函数或能达到此功能的办法?
- 我在vs2005写了一个activex,怎么在页面调用啊?急啊,谢谢了
- MFC基于数据库的对话框联动?
- 如何在ppp建立连接后修改客户端从DHCP上获得的参数如ip,默认gateway等参数?
- epp都没有听说过?50分不知道够不够?
你的程序没办法,只能走这条路;MFC的消息处理框架(快速消息处理)让CWnd对象只能在单个线程内生存。
但我想还是有方法可以解决的
解决方法:
将主框架窗口的句柄作为参数传递给工作者线程。
在工作者线程中使用
CWnd::FromHandle(hwnd)得到指针就可以了。
不行的,这样的CWnd指针是不能downcast(因为它是新构造的临时CWnd对象,在OnIdle的时候要被释放掉的),还是只能用来发点消息而已。
我再搞一天,如果没有进展就给bugn分,不过也很感谢seman兄的关注!
我已经把代码重写了,多谢大家的帮助。
另外一个问题:
在delete一个对象时出错一般有哪几种原因?