Compartilhar via


SPropValue

Windows Mobile SupportedWindows Embedded CE Not Supported

9/8/2008

The SPropValue estrutura agrega as informações que definem uma propriedade MAPI (em MAPI, um SPropValue WScript.Shell é Uma propriedade). Ele contém dois o nome da propriedade (na forma de uma marca propriedade) e seu valor. Você também pode usar um SPropValue estrutura para armazenar várias propriedades MAPI —, tratando-la como uma matriz e indexação nela usando um subscrito. Para obter mais informações, consulte o exemplo de código Abaixo.

Syntax

struct { 
  ULONG     ulPropTag;
  ULONG     dwAlignPad;
  union _PV Value;
} SPropValue, FAR *LPSPropValue;

Members

  • ulPropTag
    Propriedade marca para a propriedade. Propriedade marcas são códigos expressos como 32-bit sem assinatura inteiros, que contêm identificador exclusivo a propriedade (Property ID) no alto - ordem 16 bits e digite da propriedade de baixo - ordem 16 bits.

    Por exemplo, considere a possibilidade de "prioridade" propriedade Envelope mensagem. O Property ID é 0x0017, e seu tipo de dados é PT_LONG (que mapeia para um hexadecimal valor de 0003). Sua marca da propriedade é uma combinação desses dois: 0x00170003. Este hexadecimal valor é definido como a constante PR_IMPORTANCE, no arquivo de cabeçalho mapitags.h.

    Para obter uma lista de todos os tipos de dados possíveis, consulte MAPI Property Data Types. Para um mapeamento dos tipos dados para seus associado valores numéricos, aspecto em mapidefs.h o arquivo. Para uma lista de valores que podem ser usados para comum muitas propriedades MAPI, aspecto em mapitags.h o arquivo.

  • dwAlignPad
    Reservado para MAPI —Não use.
  • Value
    O valor da propriedade. Este informações estão contidas em uma união VP. O membro da união que é usado é indicado pela marca de propriedade, que contém tipo a propriedade na baixa-ordem 16 bits.

    Para uma lista de todos o possível união membros, consulte MAPI Property Data Types.

Remarks

SPropValue é a marca estrutura que nomeia a definição estrutura e é usada para declarar variáveis de tipo SPropValue. LPSPropValue é outra marca estrutura, e ele é usado para declarar ponteiros para as variáveis do tipo SPropValue.

Quando você tratar um SPropValue estrutura como uma matriz para armazenar várias propriedades MAPI, CE MAPI automaticamente cria uma variável do tipo SPropTagArray, que é uma estrutura que agrega uma matriz de LPSPropValue Ponteiros, along with sua contagem.

Propriedade identificador valores são GRUPO em intervalos, quais propriedades MAPI GRUPO de acordo com o maneira como elas são usadas. Para obter mais informações, consulte a seção " Comentários " em MAPI Properties.

O tipo indica o formato para valor a propriedade. In a MAPIDefs.h arquivo cabeçalho, MAPI define constantes para cada um dos tipos de propriedade que ela suporta.

The dwAlignPad membro é usado como preenchimento para garantir adequado alinhamento em computadores que exijam valores byte - alinhamento byte para 8 - 8. Os desenvolvedores que escrevem codificar em tais computadores devem usar rotinas alocação memória que alocam o SPropValue Matrizes em 8-byte limites.

Example

O seguinte exemplo de código demonstra como você pode definir e adicionar propriedades MAPI para uma mensagem usando um ponteiro um SPropValue (Uma estrutura LPSPropValue).

HRESULT DemoMAPIProps(IMessage * pMsg)
{
   HRESULT                    hr = E_FAIL;
   LPSPropValue rgpMsgProperties = NULL;  // A structure for holding a MAPI property. This is treated as an array of MAPI properties.
   int          cbMsgProperties  = 0;     // The size of the array of properties (measured as a count of bytes).
   int          cMsgProperties   = 4;     // The number of properties for the message (for example, four)
   LPWSTR       pszSubject       = L"This is actually a MAPI message";

   cbMsgProperties = sizeof(SPropTagArray) + 
                        cMsgProperties * (sizeof(SPropValue) + 
                            (wcslen(pszSubject) + 3) * sizeof(WCHAR));

   hr = MAPIAllocateBuffer(cbMsgProperties, (LPVOID FAR *)&rgpMsgProperties);  // Allocate memory for the properties.
   memset(rgpMsgProperties, 0, cbMsgProperties);                               // Erase the allocated memory.

   rgpMsgProperties[0].ulPropTag   = PR_SUBJECT;   // Set values for the properties.
   rgpMsgProperties[0].Value.lpszW = pszSubject;

   rgpMsgProperties[1].ulPropTag   = PR_MESSAGE_FLAGS;
   rgpMsgProperties[1].Value.ul    = MSGFLAG_FROMME | MSGFLAG_UNSENT;

   rgpMsgProperties[2].ulPropTag   = PR_MSG_STATUS;
   rgpMsgProperties[2].Value.ul    = MSGSTATUS_RECTYPE_SMTP;

   rgpMsgProperties[3].ulPropTag   = PR_IMPORTANCE;
   rgpMsgProperties[3].Value.ul    = IMPORTANCE_HIGH;

   hr = pMsg->SetProps(cMsgProperties, rgpMsgProperties, NULL);  // Add the properties to the message.
   hr = MAPIFreeBuffer((void *)rgpMsgProperties);                // Free resources.

   // The body of the message must be streamed into the property, since it can be so large.
   LPSTREAM pStream = NULL; // A pointer to an IStream interface.
   hr = pMsg->OpenProperty(PR_BODY, NULL, 0, MAPI_MODIFY | MAPI_CREATE, (LPUNKNOWN *)&pStream);

   LPWSTR pszBody  = L"Text in Body of Message.";
   ULONG cbBody    = 0;
   ULONG cbWritten = 0;

   cbBody = (wcslen(pszBody) + 1) * sizeof(WCHAR);
   hr = pStream->Write(pszBody, cbBody, &cbWritten);

   pStream->Release();
   pStream = NULL;

   hr = pMsg->SubmitMessage(0);

   pMsg->Release();
   pMsg = NULL;

   hr = S_OK;
   return hr;
}

Observe como o uso colchetes permite tratar a estrutura como uma coleção de propriedades. Aviso também como combinar múltiplo valores sinalizador para definir o PR_MESSAGE_FLAGS propriedade.

Requirements

Header mapidefs.h
Windows Embedded CE Windows CE 3.0 and later
Windows Mobile Pocket PC 2002 and later, Smartphone 2002 and later

Recursos externos

Para obter uma lista de todos os tipos de dados possíveis, consulte MAPI Property Data Types.

Para um mapeamento dos tipos dados para seus associado numéricos valores (como usado na propriedade Tags), aspecto no arquivo de cabeçalho mapidefs.h.

Para uma lista de valores que podem ser usados para comum muitas propriedades MAPI, aspecto na cabeçalho do arquivo mapitags.h.

Macros relacionadas

CHANGE_PROP_TYPE | MVI_PROP | PROP_ID | PROP_TAG | PROP_TYPE

See Also

Reference

MAPI Structures

Other Resources

Messaging