Compartilhar via


Ler propriedades de fuso horário de um compromisso

Este tópico mostra uma função, , ReadTimeZonesque chama as duas funções BinToTZDEFINITION e BinToTZREG, para ler as propriedades do fuso horário, PidLidAppointmentTimeZoneDefinitionStartDisplay e PidLidTimeZoneStruct, de um compromisso.

PidLidAppointmentTimeZoneDefinitionStartDisplay contém um fluxo que faz o mapeamento para o formato persistente de uma estrutura TZDEFINITION, e PidLidTimeZoneStruct contém um fluxo que faz o mapeamento para o formato persistente de uma estrutura TZREG. Para obter as estruturas TZDEFINITION e TZREG exatas, BinToTZDEFINITION e BinToTZREG são usadas para analisar os valores de fluxo dessas propriedades adequadamente. Essas duas funções estão definidas em Analisar um fluxo de uma propriedade binária para ler a estrutura TZDEFINITION e Analisar um fluxo de uma propriedade binária para ler a estrutura TZREG, respectivamente.

void ReadTimeZones(LPMAPIPROP lpAppointment) 
{ 
    HRESULT hRes = S_OK; 
    LPSPropTagArray lpNamedPropTags = NULL; 
    MAPINAMEID NamedID[2] = {0}; 
    LPMAPINAMEID lpNamedID[2]; 
    lpNamedID[0] = &NamedID[0]; 
    lpNamedID[1] = &NamedID[1]; 
    NamedID[0].lpguid = (LPGUID)&PSETID_Appointment; 
    NamedID[0].ulKind = MNID_ID; 
    NamedID[0].Kind.lID = dispidTimeZoneStruct; 
    NamedID[1].lpguid = (LPGUID)&PSETID_Appointment; 
    NamedID[1].ulKind = MNID_ID; 
    NamedID[1].Kind.lID = dispidApptTZDefStartDisplay; 
    hRes = lpAppointment->GetIDsFromNames( 
        2, 
        lpNamedID, 
        NULL, 
        &lpNamedPropTags); 
    if (SUCCEEDED(hRes) && lpNamedPropTags) 
    { 
        SizedSPropTagArray(2,sptaTzProps) = {2, 
            CHANGE_PROP_TYPE(lpNamedPropTags->aulPropTag[0],PT_BINARY), 
            CHANGE_PROP_TYPE(lpNamedPropTags->aulPropTag[1],PT_BINARY), 
        }; 
        LPSPropValue lpProps = NULL; 
        ULONG cProps = 0; 
        hRes = lpAppointment->GetProps( 
            (LPSPropTagArray)&sptaTzProps, 
            NULL, 
            &cProps, 
            &lpProps); 
        if (SUCCEEDED(hRes) && 2 == cProps && lpProps) 
        { 
            if (PT_BINARY == PROP_TYPE(lpProps[0].ulPropTag)) 
            { 
                TZREG* ptzReg = BinToTZREG(lpProps[0].Value.bin.cb,lpProps[0].Value.bin.lpb); 
                // TODO: Do whatever is necessary with ptzReg. 
                delete ptzReg; 
            } 
            if (PT_BINARY == PROP_TYPE(lpProps[1].ulPropTag)) 
            { 
                TZDEFINITION* ptzDef = BinToTZDEFINITION(lpProps[1].Value.bin.cb,lpProps[1].Value.bin.lpb); 
                // TODO: Do whatever is necessary with ptzDef. 
                delete[] ptzDef; 
            } 
           } 
        MAPIFreeBuffer(lpProps); 
    } 
    MAPIFreeBuffer(lpNamedPropTags); 
}

Confira também