IDiaTable
Listet Durchmesser-Datenquellen eine Tabelle auf.
IDiaTable : IEnumUnknown
Methoden in die Vtable-Reihenfolge
In der folgenden Tabelle werden die Methoden von IDiaTablean.
Methode |
Beschreibung |
---|---|
Ruft die IEnumVARIANT Interface-Version dieses Enumerators ab. |
|
Ruft den Namen der Tabelle ab oder legt ihn fest. |
|
Ruft die Anzahl der Elemente in der Tabelle ab. |
|
Ruft einen Verweis auf einen bestimmten Eintrags Index ab. |
Hinweise
Diese Schnittstelle implementiert die IEnumUnknown-Enumerationsmethoden im Microsoft.VisualStudio.OLE.Interop-Namespace.Die IEnumUnknown-Enumerationsschnittstelle kann zum Durchlaufen von Tabellen und IDiaTable::get_Count die als Inhalt der IDiaTable::Item-Methoden deutlich effizienter.
Die Interpretation der IUnknown-Schnittstelle, die von der IDiaTable::Item-Methode oder der Next-Methode zurückgegeben wird (im Microsoft.VisualStudio.OLE.Interop-Namespace) weist den Typ der Tabelle ab.Wenn beispielsweise die IDiaTable-Schnittstelle eine Liste mit eingefügten Quellen darstellt, sollte die IUnknown-Schnittstelle für die IDiaInjectedSource-Schnittstelle abgefragt werden.
Hinweise für Aufrufer
Rufen Sie diese Schnittstelle, indem sie die IDiaEnumTables::Item oder IDiaEnumTables::Next-Methoden aufgerufen werden.
Die folgenden Schnittstellen werden mit der IDiaTable-Schnittstelle implementiert (das heißt Sie können die IDiaTable-Schnittstelle für eine der folgenden Schnittstellen abfragen):
Beispiel
Die erste Funktion, ShowTableNames, werden die Namen aller Tabellen in der Sitzung an.Die zweite Funktion, GetTableallen Tabellen durchsucht, für eine Tabelle, die eine angegebene Schnittstelle implementiert.Die dritte Funktion, UseTable, wird gezeigt, wie die GetTable-Funktion verwendet.
Hinweis |
---|
CDiaBSTR ist eine Klasse, die BSTR behandelt und automatisch durchgeführt wird, die die Zeichenfolge freigeben, wenn die Instanziierung den Gültigkeitsbereich verlässt. |
void ShowTableNames(IDiaSession *pSession)
{
CComPtr<IDiaEnumTables> pTables;
if ( FAILED( psession->getEnumTables( &pTables ) ) )
{
Fatal( "getEnumTables" );
}
CComPtr< IDiaTable > pTable;
while ( SUCCEEDED( hr = pTables->Next( 1, &pTable, &celt ) )
&& celt == 1 )
{
CDiaBSTR bstrTableName;
if ( pTable->get_name( &bstrTableName ) != 0 )
{
Fatal( "get_name" );
}
printf( "Found table: %ws\n", bstrTableName );
}
// Searches the list of all tables for a table that supports
// the specified interface. Use this function to obtain an
// enumeration interface.
HRESULT GetTable(IDiaSession* pSession,
REFIID iid,
void** ppUnk)
{
CComPtr<IDiaEnumTables> pEnumTables;
HRESULT hResult;
if (FAILED(pSession->getEnumTables(&pEnumTables)))
Fatal("getEnumTables");
CComPtr<IDiaTable> pTable;
ULONG celt = 0;
while (SUCCEEDED(hResult = pEnumTables->Next(1, &pTable, &celt)) &&
celt == 1)
{
if (pTable->QueryInterface(iid, (void**)ppUnk) == S_OK)
{
return S_OK;
}
pTable = NULL;
}
if (FAILED(hResult))
Fatal("EnumTables->Next");
return E_FAIL;
}
// This function shows how to use the GetTable function.
void UseTable(IDiaSession *pSession)
{
CComPtr<IDiaEnumSegments> pEnumSegments;
if (SUCCEEDED(GetTable(pSession, __uuidof(IDiaEnumSegments), &pEnumSegments)))
{
// Do something with pEnumSegments.
}
}
Anforderungen
Header: Dia2.h
Bibliothek: diaguids.lib
DLLs: msdia80.dll