IDispatch* 型のパラメータを持つ ActiveX イベントを処理するために ActiveQt ライブラリを使用しようとしています。
// ...
library RecognitionClientLib
{
importlib("stdole2.tlb");
[
uuid(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX),
helpstring("_IIFactoryEvents Interface")
]
dispinterface _IIRecognizerFactoryEvents
{
properties:
methods:
[id(1), helpstring("method OnError")] void OnError(
[in] LONG ilOperationCode,
[in] BSTR iszDescription
);
[id(2), helpstring("method OnResult")] void OnResult(
[in] IDispatch* ilpSource,
[in] LONG ilOperationCode
);
};
[
uuid(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX),
control,
helpstring("IFactory Class")
]
// ...
dumpcpp.exe を使用して、オブジェクトのヘッダー ファイルと cpp ファイルを生成しました。生成されたファイルは、ヘッダー ファイルに示されているように、イベントの生成をスキップしました。
// skipping event interface _IIFactoryEvents
ドキュメントによると、IDispatch* 引数は「QAxBase::asVariant()」に変換する必要があります。したがって、次のようにイベントを接続しようとしました。
ClientLib::IFactory* lpFactory(new ClientLib::IFactory());
bool lbOk(connect(
lpFactory,
SIGNAL(OnError(
int,
const QString&
)),
SLOT(onError(
int,
const QString&
))
));
assert(lbOk);
lbOk = connect(
lpFactory,
SIGNAL(OnResult(
QVariant,
int
)),
SLOT(onResult(
QVariant,
int
))
);
assert(lbOk);
OnError の信号を接続するのに問題はありませんが、OnResult の接続は失敗しました
Object::connect: そのようなシグナルはありません ClientLib::IFactory::OnResult(QAxObject*,int)
IDispatch* 型の引数にどのパラメーター型を使用すればよいか教えてください。
どうもありがとう!