次の方法で共有


Outlook アイテムが変更されたが保存されていないかどうかを判断する (Outlook 補助リファレンス)

このトピックは、項目が変更されているし、保存されていないかどうかを確認するのには、Outlook アイテムに対応するプロパティを呼び出し、 dispidFDirtyのディスパッチ ID を使用する方法を示します。

アイテム オブジェクトを指定して、 IUnknown::QueryInterfaceメソッドを使用して、 IDispatchインターフェイス ポインターを取得できます。 トピック FIsItemDirty の関数は、入力パラメーターとして IDispatch ポインター pdisp を受け取ります。 FIsItemDirty は IDispatch::Invoke メソッドを呼び出し、dispIdMember パラメーターの引数として dispidFDirty を指定し、wFlags のフラグDISPATCH_METHOD | DISPATCH_PROPERTYGETを指定して、項目が変更されているかどうかを確認します。 FIsItemDirty はブール値を返します (項目に未保存の変更があることを示す場合は True 、それ以外の場合は 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;
}

関連項目