本文整理汇总了C++中IDispatch::GetTypeInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ IDispatch::GetTypeInfo方法的具体用法?C++ IDispatch::GetTypeInfo怎么用?C++ IDispatch::GetTypeInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IDispatch
的用法示例。
在下文中一共展示了IDispatch::GetTypeInfo方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PyCom_BuildPyException
// @pymethod <o PyITypeInfo>|PyIDispatch|GetTypeInfo|Get type information for the object.
PyObject *PyIDispatch::GetTypeInfo(PyObject *self, PyObject *args)
{
LCID locale = LOCALE_USER_DEFAULT;
int index = 0;
// @pyparm int|locale|LOCALE_USER_DEFAULT|The locale to use.
// @pyparm int|index|0|The index of the typelibrary to fetch.
// Note that these params are reversed from the win32 call.
if (!PyArg_ParseTuple(args, "|ii:GetTypeInfo", &locale, &index))
return NULL;
IDispatch *pMyDispatch = GetI(self);
if (pMyDispatch==NULL) return NULL;
ITypeInfo *pti = NULL;
PY_INTERFACE_PRECALL;
SCODE sc = pMyDispatch->GetTypeInfo(index, locale, &pti);
PY_INTERFACE_POSTCALL;
if (sc!=S_OK) // S_OK is only acceptable result.
return PyCom_BuildPyException(sc, pMyDispatch, IID_IDispatch);
return PyCom_PyObjectFromIUnknown(pti, IID_ITypeInfo);
}
示例2: get_interfacename
static void get_interfacename( IUnknown *punk, VARIANT *vres )
{
HRESULT hr;
IDispatch *pDisp;
ITypeInfo *pTI;
BSTR bstr = NULL;
hr = punk->QueryInterface( IID_IDispatch, (void **)&pDisp );
if ( SUCCEEDED(hr) && pDisp != NULL ) {
hr = pDisp->GetTypeInfo( 0, LOCALE_USER_DEFAULT, &pTI );
if ( SUCCEEDED(hr) && pTI != NULL ) {
hr = pTI->GetDocumentation( MEMBERID_NIL, &bstr, NULL, NULL, NULL );
pTI->Release();
}
pDisp->Release();
}
if ( bstr == NULL ) {
bstr = SysAllocString( L"" );
}
vres->bstrVal = bstr;
vres->vt = VT_BSTR;
}
示例3: qax_generateDocumentation
QString qax_generateDocumentation(QAxBase *that)
{
that->metaObject();
if (that->isNull())
return QString();
ITypeInfo *typeInfo = 0;
IDispatch *dispatch = 0;
that->queryInterface(IID_IDispatch, (void**)&dispatch);
if (dispatch)
dispatch->GetTypeInfo(0, LOCALE_SYSTEM_DEFAULT, &typeInfo);
QString docu;
QTextStream stream(&docu, QIODevice::WriteOnly);
const QMetaObject *mo = that->metaObject();
QString coClass = QLatin1String(mo->classInfo(mo->indexOfClassInfo("CoClass")).value());
stream << "<h1 align=center>" << coClass << " Reference</h1>" << endl;
stream << "<p>The " << coClass << " COM object is a " << that->qObject()->metaObject()->className();
stream << " with the CLSID " << that->control() << ".</p>" << endl;
stream << "<h3>Interfaces</h3>" << endl;
stream << "<ul>" << endl;
const char *inter = 0;
int interCount = 1;
while ((inter = mo->classInfo(mo->indexOfClassInfo("Interface " + QByteArray::number(interCount))).value())) {
stream << "<li>" << inter << endl;
interCount++;
}
stream << "</ul>" << endl;
stream << "<h3>Event Interfaces</h3>" << endl;
stream << "<ul>" << endl;
interCount = 1;
while ((inter = mo->classInfo(mo->indexOfClassInfo("Event Interface " + QByteArray::number(interCount))).value())) {
stream << "<li>" << inter << endl;
interCount++;
}
stream << "</ul>" << endl;
QList<QString> methodDetails, propDetails;
const int slotCount = mo->methodCount();
if (slotCount) {
stream << "<h2>Public Slots:</h2>" << endl;
stream << "<ul>" << endl;
int defArgCount = 0;
for (int islot = mo->methodOffset(); islot < slotCount; ++islot) {
const QMetaMethod slot = mo->method(islot);
if (slot.methodType() != QMetaMethod::Slot)
continue;
if (slot.attributes() & QMetaMethod::Cloned) {
++defArgCount;
continue;
}
QByteArray returntype(slot.typeName());
if (returntype.isEmpty())
returntype = "void";
QByteArray prototype = namedPrototype(slot.parameterTypes(), slot.parameterNames(), defArgCount);
QByteArray signature = slot.methodSignature();
QByteArray name = signature.left(signature.indexOf('('));
stream << "<li>" << returntype << " <a href=\"#" << name << "\"><b>" << name << "</b></a>" << prototype << ";</li>" << endl;
prototype = namedPrototype(slot.parameterTypes(), slot.parameterNames());
QString detail = QString::fromLatin1("<h3><a name=") + QString::fromLatin1(name.constData()) + QLatin1String("></a>") +
QLatin1String(returntype.constData()) + QLatin1Char(' ') +
QLatin1String(name.constData()) + QLatin1Char(' ') +
QString::fromLatin1(prototype.constData()) + QLatin1String("<tt> [slot]</tt></h3>\n");
prototype = namedPrototype(slot.parameterTypes(), QList<QByteArray>());
detail += docuFromName(typeInfo, QString::fromLatin1(name.constData()));
detail += QLatin1String("<p>Connect a signal to this slot:<pre>\n");
detail += QString::fromLatin1("\tQObject::connect(sender, SIGNAL(someSignal") + QString::fromLatin1(prototype.constData()) +
QLatin1String("), object, SLOT(") + QString::fromLatin1(name.constData()) +
QString::fromLatin1(prototype.constData()) + QLatin1String("));");
detail += QLatin1String("</pre>\n");
if (1) {
detail += QLatin1String("<p>Or call the function directly:<pre>\n");
bool hasParams = slot.parameterTypes().count() != 0;
if (hasParams)
detail += QLatin1String("\tQVariantList params = ...\n");
detail += QLatin1String("\t");
QByteArray functionToCall = "dynamicCall";
if (returntype == "IDispatch*" || returntype == "IUnknown*") {
functionToCall = "querySubObject";
returntype = "QAxObject *";
}
if (returntype != "void")
detail += QLatin1String(returntype.constData()) + QLatin1String(" result = ");
detail += QLatin1String("object->") + QLatin1String(functionToCall.constData()) +
QLatin1String("(\"" + name + prototype + '\"');
if (hasParams)
detail += QLatin1String(", params");
detail += QLatin1Char(')');
//.........这里部分代码省略.........