QT windowsdll消息交互

jiandan26 2015-08-11 03:26:57
用QT 调用磁卡刷卡。
磁卡刷卡的DLL 是MFC封装的DLL。跟HWND有关。
QT 调用MFC的dll
其中MFC的dll中用的是消息循环.QT能成功加载外部DLL,如何能保证在处理完dll消息循环后返回QT主程序继续往后处理自己定义的程序。
...全文
101 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiqiang01234 2015-08-12
  • 打赏
  • 举报
回复
引用 5 楼 jiandan26 的回复:
线程不能操作GUI
不能直接操作,但可以发送信号给主线程
jiandan26 2015-08-12
  • 打赏
  • 举报
回复
线程不能操作GUI
jiqiang01234 2015-08-11
  • 打赏
  • 举报
回复
把mfc的dll调用放在不同的线程,与Qt的消息循环分开
jiandan26 2015-08-11
  • 打赏
  • 举报
回复
winevent必须重写QWidget实现。 而程序中要求的是QT中主程序点击按钮,直接调用DLL等到获取到消息,然后返回主线程继续往后执行。
jiandan26 2015-08-11
  • 打赏
  • 举报
回复
DLL内部没有界面显示.QT中我重写winEvent能捕获到window 消息。 bool Y_MSR_Dialog::winEvent( MSG *message, long * result ) { //QString temp1,temp2,temp3; TCHAR *aa= new TCHAR[1024]; TCHAR *temp1= new TCHAR[1024]; TCHAR *temp2= new TCHAR[1024]; TCHAR *temp3= new TCHAR[1024]; switch(message->message) { case WM_CARD_TRACK_1_RECEIVE: MSRReadString(GET_TRK_1, temp1 , 1024); break; case WM_CARD_TRACK_2_RECEIVE: MSRReadString(GET_TRK_2, temp2, 1024); this->track2=TCHARToQString(temp2); break; case WM_CARD_TRACK_3_RECEIVE: MSRReadString(GET_TRK_3, temp3, 1024); this->track3=TCHARToQString(temp3); break; case WM_COMM_RXCHAR_COMPLETE: MSRReadString(GET_ALL,aa, 1024); this->all=TCHARToQString(aa); isGetData=TRUE; MSRClose(); return FALSE; break; case WM_CARD_ERROR_READ: return FALSE; break; default: break; } return QDialog::winEvent(message,result); }
jiqiang01234 2015-08-11
  • 打赏
  • 举报
回复
MFC封装的DLL内部还有消息循环?难道dll内部要有界面显示?

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧