|
5Qter豆
本帖最后由 imlison 于 2014-7-23 22:21 编辑
最近在使用QAxObject调用一个Com接口时遇到个问题。
Com接口原型如下- long ClientToScreen(
- [in] long hwnd,
- [in, out] VARIANT* x,
- [in, out] VARIANT* y);
复制代码 根据Qt文档里的说法,VARIANT* 在Qt里对应的数据类型为 QVariant&。所以我使用dynamicCall调用如下:- int ClientToScreen(int hwnd, int &x, int &y)
- {
- QVariant v_x, v_y;
- v_x.setValue(x); v_y.setValue(y);
- int ret = obj->dynamicCall("ClientToScreen(long, QVariant&, QVariant&)", hwnd, v_x, v_y).toInt();
- x = (1 == ret ? v_x.toInt() : -1);
- y = (1 == ret ? v_y.toInt() : -1);
- return ret;
- }
复制代码 编译通过了,但是运行时提示错误信息:
当然,这个提示框是Com组件内部弹出的,应该是对参数数据类型有做检测。
不知道是哪里出现了问题?
为了更好地说明问题和测试,我就写了个类似接口的Com组件,里面也包含了测试的Qt工程。
|
最佳答案
查看完整内容
建议你使用一下工具QT自带的 dumpcpp.exe来操作com组件 非常方便,具体资料就百度下
|