diff options
Diffstat (limited to 'src/activeqt/shared/qaxutils.cpp')
-rw-r--r-- | src/activeqt/shared/qaxutils.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/activeqt/shared/qaxutils.cpp b/src/activeqt/shared/qaxutils.cpp index 9f94835..7c7e967 100644 --- a/src/activeqt/shared/qaxutils.cpp +++ b/src/activeqt/shared/qaxutils.cpp @@ -346,4 +346,32 @@ HRGN qaxHrgnFromQRegion(const QRegion ®ion, const QWidget *widget) #endif // QT_WIDGETS_LIB +QByteArray qaxTypeInfoName(ITypeInfo *typeInfo, MEMBERID memId) +{ + QByteArray result; + BSTR names; + UINT cNames = 0; + typeInfo->GetNames(memId, &names, 1, &cNames); + if (cNames && names) { + result = QString::fromWCharArray(names).toLatin1(); + SysFreeString(names); + } + return result; +} + +QByteArrayList qaxTypeInfoNames(ITypeInfo *typeInfo, MEMBERID memId) +{ + QByteArrayList result; + BSTR bstrNames[256]; + UINT maxNames = 255; + UINT maxNamesOut = 0; + typeInfo->GetNames(memId, reinterpret_cast<BSTR *>(&bstrNames), maxNames, &maxNamesOut); + result.reserve(maxNamesOut); + for (UINT p = 0; p < maxNamesOut; ++p) { + result.append(QString::fromWCharArray(bstrNames[p]).toLatin1()); + SysFreeString(bstrNames[p]); + } + return result; +} + QT_END_NAMESPACE |