0

ExcelマクロをQt/C++に移植しています。

このマクロは、ActiveXとCOMを使用して、別のアプリケーション( Brüel &KjaerPulse Labshop)と通信します。

Excelマクロは、変数を介してLabshop通知をインターセプトしWithEventsます。

C ++で同じ動作を実装するにはどうすればよいですか?Qt信号/スロットメカニズムはここでは不可能のようです...

4

2 に答える 2

0

WithEventsは、VBおよびVBAで使用されるキーワードであり、VBランタイムでコードを呼び出し、COM接続可能オブジェクトアーキテクチャを使用してコールバックメカニズムを設定するために必要なすべてのことを実行します。

このアーキテクチャとそれに関連するインターフェイスIConnectionPointなどについて理解する必要があります。C++コードにイベントシンクインターフェイスを実装します。次に、コードを追加して、シンクをPulseLabshopのイベントソースに登録します。

1つの「magic」キーワードを使用して行われたこのすべての作業は、VBが当時非常に人気があった理由の1つです。

于 2013-01-30T21:16:14.080 に答える
0

実際、Qtはdllとtlbから特定のQAxObjectを生成できます。

このプロジェクトでは、サプライヤからtlbファイルが提供されました。

プロファイルファイル:

TYPELIBS = lib/Pulse.tlb
TYPELIBS = $$system( dumpcpp lib/Pulse.tlb -nometaobject -o src/controller/Pulse )

次に、Pulse.hファイルが生成されます。クラスにはスロットとシグナルがあります。したがって、イベントを傍受するのは簡単です。

それが機能しなかった理由は、PulseLabshopライセンスの有効期限が切れたためです。

于 2013-04-17T12:55:01.413 に答える