macro DEFINE_PROPERTYKEY (propkeydef.h)

Usado para empacotar um FMTID (identificador de formato) e um PID (identificador de propriedade) em uma estrutura PROPERTYKEY que representa uma chave de propriedade.

Sintaxe

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

Parâmetros

name

O nome de uma estrutura PROPERTYKEY que representa uma chave de propriedade.

l

O valor do membro Data1 do membro fmtid da estrutura PROPERTYKEY .

w1

O valor do membro Data2 do membro fmtid da estrutura PROPERTYKEY .

w2

O valor do membro Data3 do membro fmtid da estrutura PROPERTYKEY .

b1

O valor do membro Data4[0] do membro fmtid da estrutura PROPERTYKEY .

b2

O valor do membro Data4[1] do membro fmtid da estrutura PROPERTYKEY .

b3

O valor do membro Data4[2] do membro fmtid da estrutura PROPERTYKEY .

b4

O valor do membro Data4[3] do membro fmtid da estrutura PROPERTYKEY .

b5

O valor do membro Data4[4] do membro fmtid da estrutura PROPERTYKEY .

b6

O valor do membro Data4[5] do membro fmtid da estrutura PROPERTYKEY .

b7

O valor do membro Data4[6] do membro fmtid da estrutura PROPERTYKEY .

b8

O valor do membro Data4[7] do membro fmtid da estrutura PROPERTYKEY .

pid

Um PID (identificador de propriedade). É recomendável que você defina esse valor como PID_FIRST_USABLE. Qualquer valor maior ou igual a 2 é aceitável.

Nota Os valores de 0 e 1 são reservados e não devem ser usados.
 

Retornar valor

Nenhum

Comentários

A macro DEFINE_PROPERTYKEY é definida da seguinte maneira.

#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 

Ao usar essa macro, você tem duas opções:

  • Inclua Initguid.h em seu projeto. Nesse caso, a macro declara os nomes de chave de propriedade e define as chaves de propriedade para você. Essa abordagem funciona na maioria dos casos, mas pode causar colisões de nomenclatura em projetos grandes e complexos.
  • Não inclua Initguid.h. Em vez disso, compile suas definições em um arquivo de biblioteca estática que tenha a extensão de nome de arquivo .lib. Nesse caso, a macro declara os nomes de chave de propriedade para o compilador usar, mas você deve referenciar o arquivo .lib nas configurações do vinculador do projeto. Essa abordagem funciona melhor em projetos grandes que usam vários módulos porque evita as colisões de nomenclatura mencionadas na opção 1.
Usar a macro sem incluir o Initguid.h e sem fazer referência a um arquivo de biblioteca gera o erro do vinculador LNK2001.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho propkeydef.h