Compartilhar via


IItem::GetProps

Windows Mobile SupportedWindows Embedded CE Not Supported

9/8/2008

The GetProps método obtém um gerenciador de informações pessoais lista do item de valores propriedade.

Syntax

HRESULT GetProps(
  const CEPROPID * rgPropID,
  ULONG ulFlags,
  WORD cProps,
  CEPROPVAL ** prgVals,
  ULONG * pcbBuffer,
  HANDLE hHeap
);

Parameters

  • rgPropID
    [no] Uma matriz de propriedade da identificação
  • ulFlags
    [no] Sinalizador especificando alocação de memória prgVals. Para alocar memória para prgVals, definida como CEDB_ALLOWREALLOC. Definido como zero, caso já alocada.
  • cProps
    [no] O número de valores contidos na propriedade rgPropID.
  • prgVals
    [out] Referência a uma matriz usada para retornar a lista de valores propriedade Se você alocar memória (isto é, definido ulFlags Para CEDB_ALLOWREALLOC). Se você não alocar memória, em seguida, prgVals é NULL, e GetProps aloca a memória para você. Se não houver memória insuficiente, E_OUTOFMEMORY será retornado. Para informações sobre CEPROPVAL, consulte CEPROPVAL.
  • pcbBuffer
    [In/Out] Referência para a contagem de bytes passados prgVals Se você alocar memória. Se você não alocar memória, em seguida, pcbBuffer é o tamanho da reserva que GetProps alocados em vez disso.
  • hHeap
    [no] Identificador para a memória heap para alocar prgVals (Se você alocar memória). Se você não alocar memória, em seguida, hHeap Deve ser NULL.

Return Value

This method returns the standard values HRESULT_FROM_WIN32(GetLastError()), E_INVALIDARG, E_OUTOFMEMORY GPSGetPosition, e E_FAIL, as well as o seguinte.

  • S_OK
    The method completed successfully.

Remarks

Este método oferece suporte a alocação de memória heap. Isso permite alocar um bloco de memória única para a eficiência. Se você não alocar memória com prgVals, você deve livre *prgVals com HeapFree.

Esteja ciente que obter propriedades dos itens de compromisso e contato usar como padrão produz tipos diferentes de resultados. Se você criar um novo contato item e, em seguida, consulta suas propriedades com IItem::GetProps, Source ID é será um aleatório número e cada um dos seus valores propriedade serão (CEDB_PROPNOTFOUNDwFlags = CEDB_PROPNOTFOUND). Se você criar um novo compromisso item e, em seguida, consulta suas propriedades, Source ID é e cada um dos seus valores propriedade serão zero (srcID = 0 e wFlags = 0).

Exemplo de código

O seguinte exemplo de código demonstra como usar GetProps.

Observação

Para tornar o exemplo de código mais fácil para ler, verificação de segurança e manipulação de erro não estão incluídos.This code example should not be used in a release configuration unless it has been modified to include them.

HRESULT GetPropsExample(IItem *pItem, OlItemType olItemType)
{
    HRESULT                 hr = E_FAIL;
    int                 cProps = 3;
    CEPROPID       rgPropId[3] = {0};
    CEPROPVAL * prgPropvalPoom = NULL;
    CEPROPVAL * prgPropvalUser = NULL;
    ULONG             cbBuffer = 0;
    HANDLE               hHeap = GetProcessHeap();

    // Get properties based on item type.
    switch(olItemType)
    {
        case olAppointmentItem:
            rgPropId[0] = PIMPR_SUBJECT;
            rgPropId[1] = PIMPR_START;
            rgPropId[2] = PIMPR_BUSY_STATUS;
            break;

        case olContactItem:
            rgPropId[0] = PIMPR_FIRST_NAME;
            rgPropId[1] = PIMPR_LAST_NAME;
            rgPropId[2] = PIMPR_EMAIL1_ADDRESS;
            break;

        case olTaskItem:
            rgPropId[0] = PIMPR_SUBJECT;
            rgPropId[1] = PIMPR_TEAM_TASK;
            rgPropId[2] = PIMPR_IMPORTANCE;
            break;

        default:
            hr = E_INVALIDARG;
            goto Exit;
    }

    // Allocate memory, then get item properties.
    cbBuffer = 0;
    hr = pItem->GetProps(rgPropId, 0, cProps, &prgPropvalUser, &cbBuffer, NULL);
    if(HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) == hr)
        prgPropvalUser = (CEPROPVAL *) LocalAlloc(0, cbBuffer);

    // cbBuffer is set to the number of bytes required to hold the data.
    hr = pItem->GetProps(rgPropId, 0, cProps, (CEPROPVAL **)&prgPropvalUser, &cbBuffer, NULL);

    // Alternately, you can let Outlook Mobile allocate memory, then get item properties.
    cbBuffer = 0;
    hr = pItem->GetProps(rgPropId, CEDB_ALLOWREALLOC, cProps, &prgPropvalPoom, &cbBuffer, hHeap);
    hr = S_OK;

Exit:
    // Free memory.
    LocalFree(prgPropvalUser); 
    HeapFree(hHeap, 0, prgPropvalPoom);
    return hr;
}

Requirements

Header pimstore.h
Library Pimstore.lib
Windows Mobile Pocket PC for Windows Mobile Version 5.0 and later, Smartphone for Windows Mobile Version 5.0 and later

See Also

Reference

IItem
Pocket Outlook Object Model Interfaces
IPOlItems2::GetProps

Other Resources

Pocket Outlook Object Model Enumerations