• 6169阅读
  • 0回复

QT程序使用了一个MFC多线程的DLL,有什么特殊处理的? [复制链接]

上一主题 下一主题
离线woolgate
 

只看楼主 倒序阅读 楼主  发表于: 2007-10-28
QT程序使用了一个MFC多线程的DLL,有什么特殊处理的?
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
程序exe,vc2005,qt4.2.3,是一个绘图程序,图元,拖动,画图。
使用了某dll,vc6,mfc,socked编程相关。
该dll使用AfxBeginThread创建了一个线程在后台检测网络。
exe程序引用了之后出现一堆奇怪的错误
比如本来可以拖动一个图元的现在不能拖动了,
需要最小化然后还原,然后可以看到图元到了被拖动的目的地。
图元使用QRectF之类的东西画的。

还有QGraphicsTextItem setPlainText的时候更是报出一个错误

Debug Error!
Program: D:\....\test.exe
Module: 4.2.2
File: global\qglobal.cpp
Line: 2001
ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects
owned by a different thread. Current thread 5663da8. Receiver '' (of type '
QTextDocument') was created in thread 17e9bb8", file
kernel\qcoreapplication.cpp, line 286(Press Retry to debug the application)

把dll里面的afxbeginthread去掉就没问题了
qt程序和这个afxbeginthread有什么关系吗?

另,把这个afxbeginthread改成了QThread方式,即QThread的一个子类,的run方法,后
线程运行正常,但是exe主程序死掉了,无法正常执行,对话框都拖不动。。。
快速回复
限100 字节
 
上一个 下一个