PROPVARIANT-Struktur (propidl.h)
Die PROPVARIANT-Struktur wird in den Methoden ReadMultiple und WriteMultiple von IPropertyStorage verwendet, um das Typtag und den Wert einer Eigenschaft in einem Eigenschaftensatz zu definieren.
Die PROPVARIANT-Struktur wird auch von den Methoden GetValue und SetValue von IPropertyStore verwendet, die IPropertySetStorage als primäre Methode zum Programmieren von Elementeigenschaften in Windows Vista ersetzt. Weitere Informationen finden Sie unter Eigenschaftenhandler.
Es gibt fünf Mitglieder. Der erste Member, das Werttyptag und der letzte Member, der Wert der Eigenschaft, sind signifikant. Die mittleren drei Member sind für die zukünftige Verwendung reserviert.
Syntax
typedef struct tagPROPVARIANT {
union {
typedef struct {
VARTYPE vt;
PROPVAR_PAD1 wReserved1;
PROPVAR_PAD2 wReserved2;
PROPVAR_PAD3 wReserved3;
union {
CHAR cVal;
UCHAR bVal;
SHORT iVal;
USHORT uiVal;
LONG lVal;
ULONG ulVal;
INT intVal;
UINT uintVal;
LARGE_INTEGER hVal;
ULARGE_INTEGER uhVal;
FLOAT fltVal;
DOUBLE dblVal;
VARIANT_BOOL boolVal;
VARIANT_BOOL __OBSOLETE__VARIANT_BOOL;
SCODE scode;
CY cyVal;
DATE date;
FILETIME filetime;
CLSID *puuid;
CLIPDATA *pclipdata;
BSTR bstrVal;
BSTRBLOB bstrblobVal;
BLOB blob;
LPSTR pszVal;
LPWSTR pwszVal;
IUnknown *punkVal;
IDispatch *pdispVal;
IStream *pStream;
IStorage *pStorage;
LPVERSIONEDSTREAM pVersionedStream;
LPSAFEARRAY parray;
CAC cac;
CAUB caub;
CAI cai;
CAUI caui;
CAL cal;
CAUL caul;
CAH cah;
CAUH cauh;
CAFLT caflt;
CADBL cadbl;
CABOOL cabool;
CASCODE cascode;
CACY cacy;
CADATE cadate;
CAFILETIME cafiletime;
CACLSID cauuid;
CACLIPDATA caclipdata;
CABSTR cabstr;
CABSTRBLOB cabstrblob;
CALPSTR calpstr;
CALPWSTR calpwstr;
CAPROPVARIANT capropvar;
CHAR *pcVal;
UCHAR *pbVal;
SHORT *piVal;
USHORT *puiVal;
LONG *plVal;
ULONG *pulVal;
INT *pintVal;
UINT *puintVal;
FLOAT *pfltVal;
DOUBLE *pdblVal;
VARIANT_BOOL *pboolVal;
DECIMAL *pdecVal;
SCODE *pscode;
CY *pcyVal;
DATE *pdate;
BSTR *pbstrVal;
IUnknown **ppunkVal;
IDispatch **ppdispVal;
LPSAFEARRAY *pparray;
PROPVARIANT *pvarVal;
};
} tag_inner_PROPVARIANT, PROPVARIANT, *LPPROPVARIANT;
DECIMAL decVal;
};
} PROPVARIANT, *LPPROPVARIANT;
Member
tag_inner_PROPVARIANT
tag_inner_PROPVARIANT.vt
Werttyptag.
tag_inner_PROPVARIANT.wReserved1
Für zukünftige Verwendung reserviert.
tag_inner_PROPVARIANT.wReserved2
Für zukünftige Verwendung reserviert.
tag_inner_PROPVARIANT.wReserved3
Für zukünftige Verwendung reserviert.
tag_inner_PROPVARIANT.cVal
VT_I1, Version 1
tag_inner_PROPVARIANT.bVal
VT_UI1
tag_inner_PROPVARIANT.iVal
VT_I2
tag_inner_PROPVARIANT.uiVal
VT_UI2
tag_inner_PROPVARIANT.lVal
VT_I4
tag_inner_PROPVARIANT.ulVal
VT_UI4
tag_inner_PROPVARIANT.intVal
VT_INT, Version 1
tag_inner_PROPVARIANT.uintVal
VT_UINT, Version 1
tag_inner_PROPVARIANT.hVal
VT_I8
tag_inner_PROPVARIANT.uhVal
VT_UI8
tag_inner_PROPVARIANT.fltVal
VT_R4
tag_inner_PROPVARIANT.dblVal
VT_R8
tag_inner_PROPVARIANT.boolVal
VT_BOOL
tag_inner_PROPVARIANT.__OBSOLETE__VARIANT_BOOL
tag_inner_PROPVARIANT.scode
VT_ERROR
tag_inner_PROPVARIANT.cyVal
VT_CY
tag_inner_PROPVARIANT.date
VT_DATE
tag_inner_PROPVARIANT.filetime
VT_FILETIME
tag_inner_PROPVARIANT.puuid
VT_CLSID
tag_inner_PROPVARIANT.pclipdata
VT_CF
tag_inner_PROPVARIANT.bstrVal
VT_BSTR
tag_inner_PROPVARIANT.bstrblobVal
VT_BSTR_BLOB
tag_inner_PROPVARIANT.blob
VT_BLOB, VT_BLOBOBJECT
tag_inner_PROPVARIANT.pszVal
VT_LPSTR
tag_inner_PROPVARIANT.pwszVal
VT_LPWSTR
tag_inner_PROPVARIANT.punkVal
VT_UNKNOWN
tag_inner_PROPVARIANT.pdispVal
VT_DISPATCH, Version 1
tag_inner_PROPVARIANT.pStream
VT_STREAM, VT_STREAMED_OBJECT
tag_inner_PROPVARIANT.pStorage
VT_STORAGE, VT_STORED_OBJECT
tag_inner_PROPVARIANT.pVersionedStream
VT_VERSIONED_STREAM
tag_inner_PROPVARIANT.parray
| VT_ARRAYVT_*, Version 1
tag_inner_PROPVARIANT.cac
| VT_VECTORVT_I1, Version 1
tag_inner_PROPVARIANT.caub
| VT_VECTORVT_UI1
tag_inner_PROPVARIANT.cai
| VT_VECTORVT_I2
tag_inner_PROPVARIANT.caui
| VT_VECTORVT_UI2
tag_inner_PROPVARIANT.cal
| VT_VECTORVT_I4
tag_inner_PROPVARIANT.caul
| VT_VECTORVT_UI4
tag_inner_PROPVARIANT.cah
| VT_VECTORVT_I8
tag_inner_PROPVARIANT.cauh
| VT_VECTORVT_UI8
tag_inner_PROPVARIANT.caflt
| VT_VECTORVT_R4
tag_inner_PROPVARIANT.cadbl
| VT_VECTORVT_R8
tag_inner_PROPVARIANT.cabool
| VT_VECTORVT_BOOL
tag_inner_PROPVARIANT.cascode
| VT_VECTORVT_ERROR
tag_inner_PROPVARIANT.cacy
| VT_VECTORVT_CY
tag_inner_PROPVARIANT.cadate
| VT_VECTORVT_DATE
tag_inner_PROPVARIANT.cafiletime
| VT_VECTORVT_FILETIME
tag_inner_PROPVARIANT.cauuid
| VT_VECTORVT_CLSID
tag_inner_PROPVARIANT.caclipdata
| VT_VECTORVT_CF
tag_inner_PROPVARIANT.cabstr
| VT_VECTORVT_BSTR
tag_inner_PROPVARIANT.cabstrblob
| VT_VECTORVT_BSTR
tag_inner_PROPVARIANT.calpstr
| VT_VECTORVT_LPSTR
tag_inner_PROPVARIANT.calpwstr
| VT_VECTORVT_LPWSTR
tag_inner_PROPVARIANT.capropvar
| VT_VECTORVT_VARIANT
tag_inner_PROPVARIANT.pcVal
VT_BYREF | VT_I1, Version 1
tag_inner_PROPVARIANT.pbVal
VT_BYREF | VT_UI1, Version 1
tag_inner_PROPVARIANT.piVal
VT_BYREF | VT_I2, Version 1
tag_inner_PROPVARIANT.puiVal
VT_BYREF | VT_UI2, Version 1
tag_inner_PROPVARIANT.plVal
VT_BYREF | VT_I4, Version 1
tag_inner_PROPVARIANT.pulVal
VT_BYREF | VT_UI4, Version 1
tag_inner_PROPVARIANT.pintVal
VT_BYREF | VT_INT, Version 1
tag_inner_PROPVARIANT.puintVal
VT_BYREF | VT_UINT, Version 1
tag_inner_PROPVARIANT.pfltVal
VT_BYREF | VT_R4, Version 1
tag_inner_PROPVARIANT.pdblVal
VT_BYREF | VT_R8, Version 1
tag_inner_PROPVARIANT.pboolVal
VT_BYREF | VT_R8, Version 1
tag_inner_PROPVARIANT.pdecVal
VT_BYREF | VT_DECIMAL, Version 1
tag_inner_PROPVARIANT.pscode
VT_BYREF | VT_ERROR, Version 1
tag_inner_PROPVARIANT.pcyVal
VT_BYREF | VT_CY, Version 1
tag_inner_PROPVARIANT.pdate
VT_BYREF | VT_DATE, Version 1
tag_inner_PROPVARIANT.pbstrVal
VT_BYREF | VT_BSTR, Version 1
tag_inner_PROPVARIANT.ppunkVal
VT_BYREF | VT_UNKNOWN, Version 1
tag_inner_PROPVARIANT.ppdispVal
VT_BYREF | VT_DISPATCH, Version 1
tag_inner_PROPVARIANT.pparray
VT_BYREF | VT_DISPATCH, Version 1
tag_inner_PROPVARIANT.pvarVal
VT_BYREF | VT_VARIANT, Version 1
decVal
VT_BYREF | VT_DECIMAL, Version 1
Hinweise
Die PROPVARIANT-Struktur kann auch den Wert VT_DECIMAL enthalten:
DECIMAL decVal; //VT_DECIMAL
Der Wert der DECIMAL-Struktur erfordert jedoch eine spezielle Behandlung. Die DECIMAL-Struktur hat die gleiche Größe wie eine gesamte PROPVARIANT-Struktur und passt nicht in die Union, die alle anderen Wertetypen enthält. Stattdessen belegt der Wert der DECIMAL-Struktur die gesamte PROPVARIANT-Struktur , einschließlich der reservierten Felder und des vt-Elements . Das erste Element der DECIMAL-Struktur wird jedoch nicht verwendet und ist gleich dem vt-Member der PROPVARIANT-Struktur . Daher definiert die PROPVARIANT-Strukturdeklaration in der Propidl.h-Headerdatei von Win32 den decVal-Member so, dass es dem Anfang der PROPVARIANT-Struktur entspricht. Um den Wert der DECIMAL-Struktur in eine PROPVARIANT-Struktur zu setzen, muss der Wert daher in den decVal-Member geladen werden, und das vt-Element wird auf VT_DECIMAL festgelegt, genau wie bei jedem anderen Wert.
PROPVARIANT ist der grundlegende Datentyp, mit dem Eigenschaftswerte über die IPropertyStorage-Schnittstelle gelesen und geschrieben werden.
Der Datentyp PROPVARIANT bezieht sich auf den Datentyp VARIANT, der als Teil der Automatisierung in OLE2 definiert ist. In Automation werden mehrere Definitionen wie folgt wiederverwendet:
typedef struct tagCY {
unsigned long Lo;
long Hi;
} CY;
typedef struct tagDEC {
USHORT wReserved;
BYTE scale;
BYTE sign;
ULONG Hi32;
ULONGLONG Lo64;
} DECIMAL;
typedef struct tagSAFEARRAYBOUND {
ULONG cElements;
LONG lLbound;
} SAFEARRAYBOUND;
typedef struct tagSAFEARRAY {
USHORT cDims;
USHORT fFeatures;
ULONG cbElements;
ULONG cLocks;
PVOID pvData;
SAFEARRAYBOUND rgsabound [ * ];
} SAFEARRAY;
typedef CY CURRENCY;
typedef short VARIANT_BOOL;
typedef unsigned short VARTYPE;
typedef double DATE;
typedef OLECHAR* BSTR;
Darüber hinaus sind einige Typen für die PROPVARIANT-Struktur eindeutig:
typedef struct tagCLIPDATA {
// cbSize is the size of the buffer pointed to
// by pClipData, plus sizeof(ulClipFmt)
ULONG cbSize;
long ulClipFmt;
BYTE* pClipData;
} CLIPDATA;
Zu den eindeutigen PROPVARIANT-Typen gehören mehrere Datentypen, die gezählte Arrays anderer Datentypen definieren. Die Datentypen aller gezählten Arrays beginnen mit den Buchstaben CA, z. B. CAUB, und haben einen OR-Operator vt-Wert (der VarType des Elements und ein OR-Operator mit VT_VECTOR). Die gezählte Arraystruktur hat die folgende Form (wobei name der spezifische Name des gezählten Arrays ist).
#define TYPEDEF_CA(type, name)
typedef struct tag ## name {\
ULONG cElems;\
type *pElems;\
} name
Propvarianter Typ | Code | Propvarianter Member | Wertdarstellung |
---|---|---|---|
VT_EMPTY | 0 | Keine | Einer Eigenschaft mit einem Typindikator von VT_EMPTY sind keine Daten zugeordnet. Das heißt, die Größe des Werts ist null. |
VT_NULL | 1 | Keine | Dies ist wie ein Zeiger auf NULL. |
VT_I1 | 16 | cVal | 1-Byte-Ganzzahl mit Vorzeichen. |
VT_UI1 | 17 | bVal | Ganze Zahl mit 1 Byte ohne Vorzeichen. |
VT_I2 | 2 | iVal | Zwei Bytes, die einen 2-Byte-Ganzzahlwert mit Vorzeichen darstellen. |
VT_UI2 | 18 | uiVal | 2-Byte-Ganzzahl ohne Vorzeichen. |
VT_I4 | 3 | lVal | 4-Byte-Ganzzahlwert mit Vorzeichen. |
VT_UI4 | 19 | ulVal | 4-Byte-Ganzzahl ohne Vorzeichen. |
VT_INT | 22 | intVal | 4-Byte-Ganzzahlwert mit Vorzeichen (entspricht VT_I4). |
VT_UINT | 23 | uintVal | 4-Byte-Ganzzahl ohne Vorzeichen (entspricht VT_UI4). |
VT_I8 | 20 | hVal | 8-Byte-Ganzzahl mit Vorzeichen. |
VT_UI8 | 21 | uhVal | 8-Byte-Ganzzahl ohne Vorzeichen. |
VT_R4 | 4 | fltVal | 32-Bit-IEEE-Gleitkommawert. |
VT_R8 | 5 | dblVal | 64-Bit-IEEE-Gleitkommawert. |
VT_BOOL | 11 | boolVal (bool in früheren Designs) | Boolescher Wert, ein WORD-Wert , der 0 (FALSE) oder -1 (TRUE) enthält. |
VT_ERROR | 10 | Scode | Ein DWORD, das einen status Code enthält. |
VT_CY | 6 | cyVal | 8-Byte-2-Komplement-Ganzzahl (skaliert um 10.000). Dieser Typ wird häufig für Währungsbeträge verwendet. |
VT_DATE | 7 | date | Eine 64-Bit-Gleitkommazahl, die die Anzahl der Tage (nicht Sekunden) seit dem 31. Dezember 1899 darstellt. Beispielsweise ist der 1. Januar 1900 2,0, der 2. Januar 1900, der 3.0 usw. Dies wird in derselben Darstellung wie VT_R8 gespeichert. |
VT_FILETIME | 64 | Filetime | 64-Bit-FILETIME-Struktur, wie von Win32 definiert. Es wird empfohlen, alle Zeiten in der Weltkoordinatenzeit (UTC) zu speichern. |
VT_CLSID | 72 | puuid | Zeiger auf einen Klassenbezeichner (CLSID) (oder einen anderen global eindeutigen Bezeichner (GUID)). |
VT_CF | 71 | pclipdata | Zeiger auf eine CLIPDATA-Struktur , oben beschrieben. |
VT_BSTR | 8 | bstrVal | Zeiger auf eine Unicode-Zeichenfolge mit Null-Beendigung. Der Zeichenfolge wird sofort ein DWORD vorangestellt, das die Byteanzahl darstellt, aber bstrVal zeigt über dieses DWORD auf das erste Zeichen der Zeichenfolge. BSTRs müssen mithilfe der Aufrufe Automation SysAllocString und SysFreeString zugeordnet und freigegeben werden. |
VT_BSTR_BLOB | 0xfff | bstrblobVal | Nur zur Verwendung durch das System. |
VT_BLOB | 65 | Blob | DWORD-Anzahl von Bytes, gefolgt von so vielen Bytes an Daten. Die Byteanzahl enthält nicht die vier Bytes für die Länge der Anzahl selbst. ein leeres Blobelement hätte die Anzahl null, gefolgt von null Bytes. Dies ähnelt dem Wert VT_BSTR, garantiert aber kein NULL-Byte am Ende der Daten. |
VT_BLOBOBJECT | 70 | Blob | Ein Blobelement , das ein serialisiertes Objekt in derselben Darstellung enthält, die in VT_STREAMED_OBJECT angezeigt wird. Das heißt, eine DWORD-Byteanzahl (wobei die Byteanzahl nicht die Größe von sich selbst enthält), die sich im Format eines Klassenbezeichners befindet, gefolgt von Initialisierungsdaten für diese Klasse.
Der einzige signifikante Unterschied zwischen VT_BLOB_OBJECT und VT_STREAMED_OBJECT besteht darin, dass erstere nicht über den Speicheraufwand auf Systemebene verfügt, den letzteres hätte, und eignet sich daher besser für Szenarien mit der Anzahl kleiner Objekte. |
VT_LPSTR | 30 | pszVal | Ein Zeiger auf eine NULL-beendete ANSI-Zeichenfolge auf der Standardcodepage des Systems. |
VT_LPWSTR | 31 | pwszVal | Ein Zeiger auf eine Unicode-Zeichenfolge mit Null-Beendigung im Standardgebietsschema des Benutzers. |
VT_UNKNOWN | 13 | PunkVal | Neu |
VT_DISPATCH | 9 | pdispVal | Neu |
VT_STREAM | 66 | pStream | Ein Zeiger auf eine IStream-Schnittstelle , die einen Stream darstellt, der mit dem Datenstrom "Contents" gleichgeordnet ist. |
VT_STREAMED_OBJECT | 68 | pStream | Wie in VT_STREAM, gibt aber an, dass der Stream ein serialisiertes Objekt enthält, bei dem es sich um eine CLSID gefolgt von Initialisierungsdaten für die Klasse handelt. Der Stream ist ein gleichgeordnetes Element des Inhaltsdatenstroms, der den Eigenschaftssatz enthält. |
VT_STORAGE | 67 | pStorage | Ein Zeiger auf eine IStorage-Schnittstelle , der ein Speicherobjekt darstellt, das dem "Contents"-Stream gleichgeordnet ist. |
VT_STORED_OBJECT | 69 | pStorage | Wie in VT_STORAGE, gibt aber an, dass der angegebene IStorage ein ladebares Objekt enthält. |
VT_VERSIONED_STREAM | 73 | pVersionedStream | Ein Stream mit einer GUID-Version. |
VT_DECIMAL | 14 | decVal | Eine DECIMAL-Struktur . |
VT_VECTOR | 0x1000 | Ca* | Wenn der Typindikator mit VT_VECTOR mithilfe eines OR-Operators kombiniert wird, ist der Wert einer der gezählten Arraywerte. Dadurch wird eine DWORD-Anzahl von Elementen erstellt, gefolgt von einem Zeiger auf die angegebenen Wiederholungen des Werts.
Beispielsweise weist ein Typindikator VT_LPSTR|VT_VECTOR eine DWORD-Elementanzahl auf, gefolgt von einem Zeiger auf ein Array von LPSTR-Elementen . VT_VECTOR können von einem OR-Operator mit den folgenden Typen kombiniert werden: VT_I1, VT_UI1, VT_I2, VT_UI2, VT_BOOL, VT_I4, VT_UI4, VT_R4, VT_R8, VT_ERROR, VT_I8, VT_UI8, VT_CY, VT_DATE, VT_FILETIME, VT_CLSID, VT_CF, VT_BSTR, VT_LPSTR, VT_LPWSTR und VT_VARIANT. VT_VECTOR kann auch durch einen OR-Vorgang mit VT_BSTR_BLOB kombiniert werden, ist jedoch nur für die Systemnutzung vorgesehen. |
VT_ARRAY | 0x2000 | Parray | Wenn der Typindikator mit VT_ARRAY von einem OR-Operator kombiniert wird, ist der Wert ein Zeiger auf ein SAFEARRAY. VT_ARRAY können das OR mit den folgenden Datentypen verwenden: VT_I1, VT_UI1, VT_I2, VT_UI2, VT_I4, VT_UI4, VT_INT, VT_UINT, VT_R4, VT_R8, VT_BOOL, VT_DECIMAL, VT_ERROR, VT_CY, VT_DATE, VT_BSTR, VT_DISPATCH, VT_UNKNOWN und VT_VARIANT. VT_ARRAY können OR nicht mit VT_VECTOR verwenden. |
VT_BYREF | 0x4000 | P* | Wenn der Typindikator mit VT_BYREF von einem OR-Operator kombiniert wird, ist der Wert ein Verweis. Verweistypen werden als Verweis auf Daten interpretiert, ähnlich dem Verweistyp in C++ (z. B. "int&").
VT_BYREF können OR mit den folgenden Typen verwenden: VT_I1, VT_UI1, VT_I2, VT_UI2, VT_I4, VT_UI4, VT_INT, VT_UINT, VT_R4, VT_R8, VT_BOOL, VT_DECIMAL, VT_ERROR, VT_CY, VT_DATE, VT_BSTR, VT_UNKNOWN, VT_DISPATCH, VT_ARRAY und VT_VARIANT. |
VT_VARIANT | 12 | capropvar | Ein Indikator vom Typ DWORD gefolgt vom entsprechenden Wert. VT_VARIANT kann nur mit VT_VECTOR oder VT_BYREF verwendet werden. |
VT_TYPEMASK | 0xFFF | Wird als Maske für VT_VECTOR und andere Modifizierer verwendet, um den unformatierten VT-Wert zu extrahieren. |
Zwischenablageformatbezeichner, die mit dem Tag VT_CF gespeichert werden, verwenden eine von fünf Darstellungen, die im ulClipFmt-Member der CLIPDATA-Struktur mithilfe des pClipData-Zeigers auf den jeweiligen Datentyp identifiziert werden.
ulClipFmt-Wert | pClipData-Wert |
---|---|
-1L | Ein DWORD-Wert , der einen integrierten Windows-Zwischenablageformatwert enthält. |
-2L | Ein DWORD-Wert , der einen Macintosh-Zwischenablageformatwert enthält. |
-3L | Eine GUID, die einen Formatbezeichner (FMTID) enthält. Dies wird selten verwendet. |
jeder positive Wert | Eine null-beendete Zeichenfolge, die einen Windows-Zwischenablageformatnamen enthält, der zum Übergeben an die RegisterClipboardFormat-Funktion geeignet ist. Diese Funktion registriert ein neues Zwischenablageformat. Wenn bereits ein registriertes Format mit dem angegebenen Namen vorhanden ist, wird kein neues Format registriert, und der Rückgabewert identifiziert das vorhandene Format. Dadurch können mehrere Anwendungen Daten mit demselben registrierten Zwischenablageformat kopieren und einfügen. Beim Formatnamenvergleich wird die Groß-/Kleinschreibung nicht beachtet und durch Werte im Bereich von 0xC000 bis 0xFFFF identifiziert. Die codepage, die für Zeichen in der Zeichenfolge verwendet wird, entspricht dem Codepageindikator. Der "positive Wert" ist hier die Zeichenfolgenlänge, einschließlich des NULL-Byte am Ende. Wenn Register-Zwischenablageformate in der Zwischenablage platziert oder aus der Zwischenablage abgerufen werden, müssen sie in Form eines HGLOBAL-Datentypwerts vorliegen, der das Handle für das Objekt bereitstellt. |
0L | Keine Daten (selten verwendet). |
Wenn der Wert des ulClipFmt-Members -1 ist, sind die Daten in Form eines integrierten Windows-Formats. In diesem Fall ist das erste DWORD des Puffers, auf den pClipData verweist, der Zwischenablageformatbezeichner, z. B. CF_METAFILEPICT. Im Fall von CF_METAFILEPCT folgt eine Variation der METAFILEPICT-Struktur (sie verwendet WORD anstelle von DWORD-Datentypen ). Das heißt, diese Daten haben die folgende Form:
struct PACKEDMETA
{
WORD mm;
WORD xExt;
WORD yExt
WORD reserved;
};
Nach der METAFILEPICT-Struktur sind die Metadatendaten, die für die Übergabe an die SetMetaFileBitsEx-Funktion geeignet sind. Diese Funktion erstellt eine speicherbasierte Metadatei im Windows-Format aus den bereitgestellten Daten. Diese Funktion wird zur Kompatibilität mit 16-Bit-Versionen von Windows bereitgestellt. Win32-basierte Anwendungen sollten die SetEnhMetaFileBits-Funktion verwenden. Diese Funktion ruft den Inhalt der angegebenen Metadatei im erweiterten Format ab und kopiert sie in einen Puffer. Wenn die Funktion erfolgreich ist und der Pufferzeiger NULL ist, entspricht der Rückgabewert der Größe der erweiterten Metadatei in Bytes. Wenn die Funktion erfolgreich ist und der Pufferzeiger ein gültiger Zeiger ist, ist der Rückgabewert die Anzahl der in den Puffer kopierten Bytes. Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null.
Wenn Register-Zwischenablageformate in der Zwischenablage platziert oder aus der Zwischenablage abgerufen werden, müssen sie in Form eines HGLOBAL-Werts vorliegen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [Desktop-Apps | UWP-Apps] |
Kopfzeile | propidl.h (include Propidl.h) |