Compartir a través de


Leer las propiedades de la zona horaria en una cita

En este tema se muestra una función, ReadTimeZones, que llama a las dos funciones, BinToTZDEFINITION y BinToTZREG, para leer las propiedades de zona horaria, PidLidAppointmentTimeZoneDefinitionStartDisplay y PidLidTimeZoneStruct, desde una cita.

PidLidAppointmentTimeZoneDefinitionStartDisplay contiene una secuencia que se asigna al formato persistente de una estructura TZDEFINITION y PidLidTimeZoneStruct contiene una secuencia que se asigna al formato persistente de una estructura TZREG . Para obtener las estructuras TZDEFINITION y TZREG exactas, BinToTZDEFINITION y BinToTZREG se usan para analizar correctamente los valores de secuencia de estas propiedades. Estas dos funciones se definen en Analizar una secuencia de una propiedad binaria para leer la estructura TZDEFINITION y analizar una secuencia de una propiedad binaria para leer la estructura 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); 
}

Vea también