SendMessage 发送给qt 问题

louis_liux 2016-04-06 11:21:24
现在有个老程序是MFC 现在想改造下用qt包个皮子,mfc是dll方式的
里面有进度条,我应该SendMessage 用这个应该怎么发消息呢,然后qt 接收 用qt的进度条显示进度呢
...全文
440 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
louis_liux 2016-04-08
  • 打赏
  • 举报
回复
引用 6 楼 kuyucman 的回复:
噢 , 那你试试nativeEvent(),这个能够满足
这个写了啊 现在是这个地方有问题了 发消息MFC段 SendMessage(AfxGetMainWnd()->m_hWnd, WM_USER, MSG_PROGRESS_CHANGED, (LPARAM)(i*100/total));用这个对吗,好像程序执行到那里,就报异常中止呢
louis_liux 2016-04-08
  • 打赏
  • 举报
回复
引用 14 楼 jiqiang01234 的回复:
Dll中增加一个接口函数,比如void SetQtWndHandle(HWND h);把从Qt获得的窗口句柄保存在MFC的dll中,在后续的SendMessage()中使用
搞定了,谢谢哥们
louis_liux 2016-04-08
  • 打赏
  • 举报
回复
引用 7 楼 u013466477 的回复:
Qt5用这个,windows有消息就会响应Qt的这个事件 bool Dialog::nativeEvent(const QByteArray &eventType, void *message, long *result) { Q_UNUSED(eventType); //MSG是个消息结构体,里面有类型、数据等。 MSG* msg = reinterpret_cast<MSG*>(message); } Qt4用这个 bool Dialog::winEvent(MSG *message, long *result)
发消息MFC段 SendMessage(AfxGetMainWnd()->m_hWnd, WM_USER, MSG_PROGRESS_CHANGED, (LPARAM)(i*100/total));用这个对吗,好像程序执行到那里,就报异常中止呢
jiqiang01234 2016-04-08
  • 打赏
  • 举报
回复
Dll中增加一个接口函数,比如void SetQtWndHandle(HWND h);把从Qt获得的窗口句柄保存在MFC的dll中,在后续的SendMessage()中使用
louis_liux 2016-04-08
  • 打赏
  • 举报
回复
引用 10 楼 jiqiang01234 的回复:
MFC的dll代码能不能改? 如果能改,把Qt的窗口句柄(QWidget::WinId())传入MFC的dll中(比如定义为HWND QtWnd),然后自定义一个Windows消息,比如WM_CUSTOM,用SendMessage(QtWnd,WM_CUSTOM,param1,param2);,其中param1和param2就可以携带消息的参数,比如进度条的当前刻度。最后,实现7楼所说的响应函数。
把Qt的窗口句柄(QWidget::WinId())传入MFC的dll中(比如定义为HWND QtWnd), 这个应该怎么写,怎么传入呢?
louis_liux 2016-04-08
  • 打赏
  • 举报
回复
引用 10 楼 jiqiang01234的回复:
MFC的dll代码能不能改? 如果能改,把Qt的窗口句柄(QWidget::WinId())传入MFC的dll中(比如定义为HWND QtWnd),然后自定义一个Windows消息,比如WM_CUSTOM,用SendMessage(QtWnd,WM_CUSTOM,param1,param2);,其中param1和param2就可以携带消息的参数,比如进度条的当前刻度。最后,实现7楼所说的响应函数。
MFC的dll代码能不能改?<br /> HWND QtWnd这个需要再mfc中定义一下吗?
louis_liux 2016-04-08
  • 打赏
  • 举报
回复
引用 10 楼 jiqiang01234的回复:
MFC的dll代码能不能改? 如果能改,把Qt的窗口句柄(QWidget::WinId())传入MFC的dll中(比如定义为HWND QtWnd),然后自定义一个Windows消息,比如WM_CUSTOM,用SendMessage(QtWnd,WM_CUSTOM,param1,param2);,其中param1和param2就可以携带消息的参数,比如进度条的当前刻度。最后,实现7楼所说的响应函数。
mfc可以修改,那个窗口句柄,再哪里建立呢
jiqiang01234 2016-04-08
  • 打赏
  • 举报
回复
MFC的dll代码能不能改? 如果能改,把Qt的窗口句柄(QWidget::WinId())传入MFC的dll中(比如定义为HWND QtWnd),然后自定义一个Windows消息,比如WM_CUSTOM,用SendMessage(QtWnd,WM_CUSTOM,param1,param2);,其中param1和param2就可以携带消息的参数,比如进度条的当前刻度。最后,实现7楼所说的响应函数。
louis_liux 2016-04-07
  • 打赏
  • 举报
回复
自己先顶下,没人帮我这个问题么
冷静忍耐 2016-04-07
  • 打赏
  • 举报
回复
Qt5用这个,windows有消息就会响应Qt的这个事件 bool Dialog::nativeEvent(const QByteArray &eventType, void *message, long *result) { Q_UNUSED(eventType); //MSG是个消息结构体,里面有类型、数据等。 MSG* msg = reinterpret_cast<MSG*>(message); } Qt4用这个 bool Dialog::winEvent(MSG *message, long *result)
louis_liux 2016-04-07
  • 打赏
  • 举报
回复
引用 4 楼 kuyucman 的回复:
SendMessage给qt的进度条吗?通过winid()取到句柄后,但不知道qt的进度条接不接受WIN32的标准MSG,用spy看看
SendMessage(AfxGetMainWnd()->m_hWnd, WM_USER, MSG_PROGRESS_CHANGED, (LPARAM)(i*100/total)); 把进度消息转换成进度数字呢,然后给 processbar 不知道这种怎么在qt 里面接mfc的消息呢
东莞某某某 2016-04-07
  • 打赏
  • 举报
回复
噢 , 那你试试nativeEvent(),这个能够满足
东莞某某某 2016-04-07
  • 打赏
  • 举报
回复
SendMessage给qt的进度条吗?通过winid()取到句柄后,但不知道qt的进度条接不接受WIN32的标准MSG,用spy看看
louis_liux 2016-04-07
  • 打赏
  • 举报
回复
引用 2 楼 Kenier 的回复:
1、QProgressBar::setRange 设置最小和最大范围 2、QProgressBar::setValue 设置当前进度
但是那个进度是再mfc dll中的啊
astro_lee 2016-04-07
  • 打赏
  • 举报
回复
1、QProgressBar::setRange 设置最小和最大范围 2、QProgressBar::setValue 设置当前进度

16,173

社区成员

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

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