summaryrefslogtreecommitdiffstats
path: root/src/activeqt/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/activeqt/shared')
-rw-r--r--src/activeqt/shared/qaxutils.cpp28
-rw-r--r--src/activeqt/shared/qaxutils_p.h3
2 files changed, 31 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 &region, 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
diff --git a/src/activeqt/shared/qaxutils_p.h b/src/activeqt/shared/qaxutils_p.h
index acd0eb8..f2576c1 100644
--- a/src/activeqt/shared/qaxutils_p.h
+++ b/src/activeqt/shared/qaxutils_p.h
@@ -120,6 +120,9 @@ QRect qaxFromNativeRect(const RECT &r, const QWidget *w);
HRGN qaxHrgnFromQRegion(const QRegion &region, const QWidget *widget);
#endif // QT_WIDGETS_LIB
+QByteArray qaxTypeInfoName(ITypeInfo *typeInfo, MEMBERID memId);
+QByteArrayList qaxTypeInfoNames(ITypeInfo *typeInfo, MEMBERID memId);
+
QT_END_NAMESPACE
Q_DECLARE_METATYPE(IDispatch**)