Эквивалент WithEvents VBA в Qt / Stack Overflow

Я портирую макрос Excel на Qt / C ++.

Этот макрос использует ActiveX и COM для связи с другим приложением (Pulse Labshop от Брюль & Каджаер).

Макрос Excel перехватывает уведомление Labshop через WithEvents переменная.

Как я могу реализовать такое же поведение в C ++? Механизм сигнала / слота Qt здесь не представляется возможным …

0

Решение

WithEvents это ключевое слово, используемое в VB и VBA для вызова кода во время выполнения VB, который делает все необходимое для настройки механизма обратного вызова, используя архитектура COM-объектов.

Вы должны прочитать об этой архитектуре и связанных с ней интерфейсах IConnectionPoint, так далее; реализовать интерфейс приемника событий в вашем коде C ++; а затем добавьте код, чтобы зарегистрировать свой приемник в источнике событий Pulse Labshop.

Вся эта работа, выполненная с помощью одного «волшебного» ключевого слова, является одной из причин, почему VB был настолько популярен в свое время.

0

Другие решения

На самом деле Qt может генерировать конкретный QAxObject из dll и tlb.

Для этого проекта поставщик дал мне файл tlb.

В файле pro:

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

Затем создается файл Pulse.h. У классов есть слоты и сигналы. Так что легко перехватывать события.

Причина, по которой это не сработало, заключалась в том, что срок действия лицензии на Pulse Labshop истек.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector