• 4507阅读
  • 2回复

vc写的DLL接口如何向QT界面发送进度信息,感谢! [复制链接]

上一主题 下一主题
离线lanmengli
 

只看楼主 倒序阅读 楼主  发表于: 2017-04-28

      我这边用VC写的DLL接口,QT写的界面,QT采用多线程调用VC的接口,VC接口中需要向界面实时发送进度信息。这里不知道如何发送进度信息?
非常感谢!
离线dinjay

只看该作者 1楼 发表于: 2017-08-09
通过回调的方式会好一些,vc接口里定义好设置回调函数的接口,qt里将回调函数指针设置进去,然后dll里每次通知更新进度时调用回调函数指针。qt里直接在回调函数中实现进度条的更新。
离线hytrao

只看该作者 2楼 发表于: 2021-03-19
在vc里面使用postMessage将自定义消息传出,然后再qt主体程序中重写nativeEvent函数,在该函数接收windows自定义消息

bool EmbededWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
        if (eventType == "windows_generic_MSG") //windows平台
        {
                MSG* msg = reinterpret_cast<MSG*>(message); //

                if(msg->message == WM_COPYDATA)//消息类型
                {
                        COPYDATASTRUCT *data = reinterpret_cast<COPYDATASTRUCT*>(msg->lParam);
                        QTextCodec *gbk = QTextCodec::codecForName("GB18030");
                        QString recevice = gbk->toUnicode((char *)(data->lpData));//转码

                        if(recevice.contains("Command="))
                        {
                           return true;//消息不再进行传递,不再处理
                        }

                        m_wnd = reinterpret_cast<HWND>(msg->wParam);//高地址的参数

                }
        }

        return QWidget::nativeEvent(eventType, message, result);//交给Qt处理
}

快速回复
限100 字节
 
上一个 下一个