Compartir a través de


macro DEFINE_PROPERTYKEY (propkeydef.h)

Se usa para empaquetar un identificador de formato (FMTID) y un identificador de propiedad (PID) en una estructura PROPERTYKEY que representa una clave de propiedad.

Sintaxis

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

Parámetros

name

Nombre de una estructura PROPERTYKEY que representa una clave de propiedad.

l

Valor del miembro Data1 del miembro fmtid de la estructura PROPERTYKEY .

w1

Valor del miembro Data2 del miembro fmtid de la estructura PROPERTYKEY .

w2

Valor del miembro Data3 del miembro fmtid de la estructura PROPERTYKEY .

b1

Valor del miembro Data4[0] del miembro fmtid de la estructura PROPERTYKEY .

b2

Valor del miembro Data4[1] del miembro fmtid de la estructura PROPERTYKEY .

b3

Valor del miembro Data4[2] del miembro fmtid de la estructura PROPERTYKEY .

b4

Valor del miembro Data4[3] del miembro fmtid de la estructura PROPERTYKEY .

b5

Valor del miembro Data4[4] del miembro fmtid de la estructura PROPERTYKEY .

b6

Valor del miembro Data4[5] del miembro fmtid de la estructura PROPERTYKEY .

b7

Valor del miembro Data4[6] del miembro fmtid de la estructura PROPERTYKEY .

b8

Valor del miembro Data4[7] del miembro fmtid de la estructura PROPERTYKEY .

pid

Identificador de propiedad (PID). Se recomienda establecer este valor en PID_FIRST_USABLE. Cualquier valor mayor o igual que 2 es aceptable.

Nota Los valores de 0 y 1 están reservados y no se deben usar.
 

Valor devuelto

None

Observaciones

La macro DEFINE_PROPERTYKEY se define de la siguiente manera.

#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 

Al usar esta macro, tiene dos opciones:

  • Incluya Initguid.h en el proyecto. En este caso, la macro declara los nombres de clave de propiedad y define las claves de propiedad automáticamente. Este enfoque funciona en la mayoría de los casos, pero puede provocar colisiones de nombres en proyectos grandes y complejos.
  • No incluya Initguid.h. En su lugar, compile las definiciones en un archivo de biblioteca estático que tenga la extensión de nombre de archivo .lib. En este caso, la macro declara los nombres de clave de propiedad que el compilador va a usar, pero debe hacer referencia al archivo .lib en la configuración del enlazador para el proyecto. Este enfoque funciona mejor en proyectos grandes que usan varios módulos porque evita las colisiones de nomenclatura mencionadas en la opción 1.
El uso de la macro sin incluir Initguid.h y sin hacer referencia a un archivo de biblioteca genera el error del enlazador de LNK2001.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado propkeydef.h