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;
}