IPersistFile::IsDirty メソッド (objidl.h)
オブジェクトが現在のファイルに最後に保存されてから変更されたかどうかを判断します。
構文
HRESULT IsDirty();
戻り値
このメソッドは、オブジェクトが変更されたことを示すS_OKを返します。 それ以外の場合は S_FALSE を返します。
注釈
オブジェクトを閉じる前に保存する必要があるかどうかを判断するには、このメソッドを使用します。 オブジェクトのダーティ フラグは、IPersistFile::Save メソッドで条件付きでクリアされます。
呼び出し元へのメモ
OLE では IsDirty は呼び出されません。 アプリケーションは、オブジェクトもファイルに保存しない限り、呼び出しません。エラー リターン コードは、オブジェクトが変更されたことを示すものとして扱う必要があります。 このメソッドが明示的にS_FALSEを返さない限り、 オブジェクトを保存する必要があるとします。
実装者へのメモ
オブジェクトが含まれないオブジェクトは、ダーティ フラグをチェックして適切な結果を返すだけです。1 つ以上の包含オブジェクトを含むコンテナーでは、格納されているオブジェクトのいずれかが最後に保存されてから変更されたときに設定される内部ダーティ フラグを保持する必要があります。 これを行うには、コンテナーで IAdviseSink インターフェイスを実装することで、アドバイス シンクを維持する必要があります。 その後、コンテナーは 、IDataObject::D Advise の呼び出しを使用して、データ変更通知の各リンクまたは埋め込みを登録できます。 その後、コンテナーは IAdviseSink::OnDataChange 通知を受信したときに、内部のダーティ フラグを設定できます。 コンテナーがデータ変更通知に登録されていない場合、 IPersistFile::IsDirty 実装は、含まれている各オブジェクトに対して IPersistStorage::IsDirty を呼び出して、それらが変更されたかどうかを判断します。
コンテナーは、オブジェクトが保存されるファイルが保存後の現在の作業ファイルである限り、ダーティ フラグを保存するたびにクリアできます。 したがって、ダーティ フラグは、成功した保存または名前を付けて保存操作の後にクリアされますが、コピーを 名前を付けて保存 する 操作の後にはクリアされません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h |