Condividi tramite


macro DEFINE_PROPERTYKEY (propkeydef.h)

Usato per comprimere un identificatore di formato (FMTID) e un identificatore di proprietà (PID) in una struttura PROPERTYKEY che rappresenta una chiave di proprietà.

Sintassi

void DEFINE_PROPERTYKEY(
   name,
   l,
   w1,
   w2,
   b1,
   b2,
   b3,
   b4,
   b5,
   b6,
   b7,
   b8,
   pid
);

Parametri

name

Nome di una struttura PROPERTYKEY che rappresenta una chiave di proprietà.

l

Valore del membro Data1 del membro fmtid della struttura PROPERTYKEY .

w1

Valore del membro Data2 del membro fmtid della struttura PROPERTYKEY .

w2

Valore del membro Data3 del membro fmtid della struttura PROPERTYKEY .

b1

Valore del membro Data4[0] del membro fmtid della struttura PROPERTYKEY .

b2

Valore del membro Data4[1] del membro fmtid della struttura PROPERTYKEY .

b3

Valore del membro Data4[2] del membro fmtid della struttura PROPERTYKEY .

b4

Valore del membro Data4[3] del membro fmtid della struttura PROPERTYKEY .

b5

Valore del membro Data4[4] del membro fmtid della struttura PROPERTYKEY .

b6

Valore del membro Data4[5] del membro fmtid della struttura PROPERTYKEY .

b7

Valore del membro Data4[6] del membro fmtid della struttura PROPERTYKEY .

b8

Valore del membro Data4[7] del membro fmtid della struttura PROPERTYKEY .

pid

Identificatore di proprietà (PID). È consigliabile impostare questo valore su PID_FIRST_USABLE. Qualsiasi valore maggiore o uguale a 2 è accettabile.

Nota I valori 0 e 1 sono riservati e non devono essere utilizzati.
 

Valore restituito

nessuno

Osservazioni

La macro DEFINE_PROPERTYKEY è definita come segue.

#ifdef INITGUID
#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) \
EXTERN_C const PROPERTYKEY DECLSPEC_SELECTANY name = \
{ { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }, pid }
#else
#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) \ 
EXTERN_C const PROPERTYKEY name
#endif // INITGUID 

Quando si usa questa macro, sono disponibili due opzioni:

  • Includere Initguid.h nel progetto. In questo caso, la macro dichiara i nomi delle chiavi di proprietà e definisce automaticamente le chiavi di proprietà. Questo approccio funziona nella maggior parte dei casi, ma può causare conflitti di denominazione in progetti complessi di grandi dimensioni.
  • Non includere Initguid.h. Compilare invece le definizioni in un file di libreria statica con estensione lib. In questo caso, la macro dichiara i nomi delle chiavi di proprietà da usare per il compilatore, ma è necessario fare riferimento al file lib nelle impostazioni del linker per il progetto. Questo approccio funziona meglio nei progetti di grandi dimensioni che usano più moduli perché evita le collisioni di denominazione indicate nell'opzione 1.
L'utilizzo della macro senza includere Initguid.h e senza fare riferimento a un file di libreria genera l'errore del linker LNK2001.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione propkeydef.h