找回密码
 立即注册
收起左侧

QAxObject调用Com接口问题

2
回复
7574
查看
[复制链接]
累计签到:6 天
连续签到:1 天
来源: 2014-7-23 18:58:50 显示全部楼层 |阅读模式
5Qter豆
本帖最后由 imlison 于 2014-7-23 22:21 编辑

最近在使用QAxObject调用一个Com接口时遇到个问题。

Com接口原型如下
  1. long ClientToScreen(
  2.                 [in] long hwnd,
  3.                 [in, out] VARIANT* x,
  4.                 [in, out] VARIANT* y);
复制代码
根据Qt文档里的说法,VARIANT* 在Qt里对应的数据类型为 QVariant&。所以我使用dynamicCall调用如下:
  1. int ClientToScreen(int hwnd, int &x, int &y)
  2. {
  3.     QVariant v_x, v_y;
  4.     v_x.setValue(x); v_y.setValue(y);
  5.     int ret = obj->dynamicCall("ClientToScreen(long, QVariant&, QVariant&)", hwnd, v_x, v_y).toInt();
  6.     x = (1 == ret ? v_x.toInt() : -1);
  7.     y = (1 == ret ? v_y.toInt() : -1);
  8.     return ret;
  9. }
复制代码
编译通过了,但是运行时提示错误信息:


当然,这个提示框是Com组件内部弹出的,应该是对参数数据类型有做检测。

不知道是哪里出现了问题?



为了更好地说明问题和测试,我就写了个类似接口的Com组件,里面也包含了测试的Qt工程。


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

建议你使用一下工具QT自带的 dumpcpp.exe来操作com组件 非常方便,具体资料就百度下
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-7-23 18:58:51 显示全部楼层
建议你使用一下工具QT自带的 dumpcpp.exe来操作com组件 非常方便,具体资料就百度下
回复

使用道具 举报

累计签到:6 天
连续签到:1 天
2014-7-30 23:48:53 显示全部楼层
难道没有人用Qt调用过Com组件么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了