parametresi ile bağlanıyorum Bir idl dosyasında olduğu gibi IDispatch * tipinde bir parametresi olan bir ActiveX olayını işlemek için ActiveQt kütüphanesini kullanmaya çalışıyorum.QAxObject olayına bir IDispatch *
// ...
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'yi kullandım ve nesne için bir üstbilgi dosyası ve bir cpp dosyası oluşturdum. başlık dosyasında gösterildiği gibi oluşturulan dosya olay nesil atlanan:
// skipping event interface _IIFactoryEvents
belgeye göre, Idispatch * bağımsız değişkeni "QAxBase :: asVariant()" dönüştürülmelidir. Dolayısıyla aşağıdaki gibi olayları arasında bağlantı kurmaya çalıştılar: Ben OnError sinyal ama OnResult bağlanmasını bağlanmak sorun
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);
Nesne ile başarısız oldu :: bağlamak: Böyle sinyal ClientLib :: IFactory :: OnResult (QAxObject *, int)
IDispatch * türü bağımsız değişkenleri için hangi parametre türünü kullanmalıyım?
Çok teşekkürler!
Nitpick: const başvuruları, bağlandığınız sinyalin yanı sıra, boşluk olarak da atılan sinyal/yuva imzalarından kaldırılmalıdır. Bu, Qt'nin imzaları normalize etmek zorunda kalmaması nedeniyle biraz çalışma süresi kazandırır. Böylece bool lbOk = connect (lpFactory, SIGNAL (OnError (int, QString)), SLOT (onError (int, QString))); '. –
Tavsiye için teşekkürler. Onları değiştireceğim. :) – crackpot