Determinar si un elemento de Outlook se ha modificado pero no guardado (Referencia auxiliar de Outlook)
En este tema se muestra cómo utilizar el identificador de envío dispidFDirty para invocar la propiedad correspondiente en un elemento de Outlook para ver si el elemento se ha modificado y no se ha guardado.
Dado un objeto de elemento, puede utilizar el método IUnknown::QueryInterface para obtener un puntero de interfaz IDispatch . La función del tema FIsItemDirty
acepta un puntero IDispatch , pdisp, como parámetro de entrada.
FIsItemDirty
llama al método IDispatch::Invoke , especificando dispidFDirty como argumento para el parámetro dispIdMember y las marcas DISPATCH_METHOD | DISPATCH_PROPERTYGET
de wFlags, para comprobar si el elemento se ha modificado.
FIsItemDirty
devuelve un valor booleano (True para indicar que el elemento tiene cambios no guardados; en caso contrario, False).
bool FIsItemDirty(IDispatch *pdisp)
{
DISPPARAMS dispparams;
UINT uArgErr;
HRESULT hr = S_OK;
CComVariant varDirty;
dispparams.rgvarg = 0;
dispparams.cArgs = 0;
dispparams.cNamedArgs = 0;
dispparams.rgdispidNamedArgs = NULL;
hr = pdisp->Invoke(dispidFDirty,
IID_NULL,
LOCALE_SYSTEM_DEFAULT,
DISPATCH_METHOD | DISPATCH_PROPERTYGET,
&dispparams,
&varDirty,
NULL,
&uArgErr);
return SUCCEEDED(hr) && varDirty.bVal;
}