IDiaPropertyStorage

Permet de lire les propriétés persistantes d’un jeu de propriétés DIA.

Syntax

IDiaPropertyStorage : IUnknown

Méthodes dans l'ordre Vtable

Le tableau suivant présente les méthodes de IDiaPropertyStorage.

Méthode Description
IDiaPropertyStorage::Enum Obtient un pointeur vers un énumérateur pour les propriétés de ce jeu.
IDiaPropertyStorage::ReadBOOL Lit les valeurs BOOL dans un jeu de propriétés.
IDiaPropertyStorage::ReadBSTR Lit les valeurs BSTR dans un jeu de propriétés.
IDiaPropertyStorage::ReadDWORD Lit les valeurs DWORD dans un jeu de propriétés.
IDiaPropertyStorage::ReadLONG Lit les valeurs LONG dans un jeu de propriétés.
IDiaPropertyStorage::ReadMultiple Lit les valeurs de propriété dans un jeu de propriétés.
IDiaPropertyStorage::ReadPropertyNames Obtient les noms de chaîne correspondant à des identificateurs de propriété donnés.
IDiaPropertyStorage::ReadULONGLONG Lit les valeurs ULONGLONG dans un jeu de propriétés.

Remarques

Chaque propriété d’un jeu de propriétés est identifiée par un identificateur (ID) de propriété, qui est une valeur ULONG de quatre octets propre à ce jeu. Les propriétés exposées avec l’interface IDiaPropertyStorage correspondent aux propriétés disponibles dans l’interface parente. Par exemple, les propriétés de l’interface IDiaSymbol sont accessibles par nom avec l’interface IDiaPropertyStorage (notez toutefois que même si la propriété peut être accessible, cela ne signifie pas que la propriété est valide pour un objet IDiaSymbol particulier).

Remarques pour les appelants

Obtenez cette interface en appelant la méthode QueryInterface sur une autre interface. Vous pouvez interroger les interfaces suivantes pour obtenir l’interface IDiaPropertyStorage :

Exemple

Cet exemple montre une fonction qui affiche toutes les propriétés exposées par l’objet IDiaPropertyStorage. Consultez l’article sur l’interface IDiaEnumInjectedSources pour voir un exemple d’obtention de l’interface IDiaPropertyStorage à partir de l’interface IDiaInjectedSource.

void PrintPropertyStorage(IDiaPropertyStorage* pPropertyStorage)
{
    IEnumSTATPROPSTG* pEnumProps;
    STATPROPSTG       prop;
    DWORD             celt = 1;

    if (pPropertyStorage->Enum(&pEnumProps) == S_OK)
    {
        while (pEnumProps->Next(celt, &prop, &celt) == S_OK)
        {
            PROPSPEC pspec = { PRSPEC_PROPID, prop.propid };
            PROPVARIANT vt = { VT_EMPTY };

            if (pPropertyStorage->ReadMultiple( 1, &pspec, &vt) == S_OK)
            {
                switch( vt.vt ){
                    case VT_BOOL:
                        wprintf( L"%32s:\t %s\n", prop.lpwstrName, vt.bVal ? L"true" : L"false" );
                        break;
                    case VT_I2:
                        wprintf( L"%32s:\t %d\n", prop.lpwstrName, vt.iVal );
                        break;
                    case VT_UI2:
                        wprintf( L"%32s:\t %d\n", prop.lpwstrName, vt.uiVal );
                        break;
                    case VT_I4:
                        wprintf( L"%32s:\t %d\n", prop.lpwstrName, vt.intVal );
                        break;
                    case VT_UI4:
                        wprintf( L"%32s:\t 0x%0x\n", prop.lpwstrName, vt.uintVal );
                        break;
                    case VT_UI8:
                        wprintf( L"%32s:\t 0x%x\n", prop.lpwstrName, vt.uhVal.QuadPart );
                        break;
                    case VT_BSTR:
                        wprintf( L"%32s:\t %s\n", prop.lpwstrName, vt.bstrVal );
                        break;
                    case VT_UNKNOWN:
                        wprintf( L"%32s:\t %p\n", prop.lpwstrName, vt.punkVal );
                        break;
                    case VT_SAFEARRAY:
                        break;
                    default:
                       break;
                }
                VariantClear((VARIANTARG*) &vt);
            }
        }
        pEnumProps->Release();
    }
}

Configuration requise

En-tête : Dia2.h

Bibliothèque : diaguids.lib

DLL : msdia80.dll

Voir aussi