CDataRecoveryHandler クラス
アプリケーションが CDataRecoveryHandler
予期せず終了した場合は、ドキュメントが自動保存され、復元されます。
構文
class CDataRecoveryHandler : public CObject
メンバー
コンストラクター
名前 | 説明 |
---|---|
CDataRecoveryHandler::CDataRecoveryHandler | CDataRecoveryHandler オブジェクトを構築します。 |
メソッド
データ メンバー
名前 | 説明 |
---|---|
m_bRestoringPreviousOpenDocs | データ回復ハンドラーが以前に開いているドキュメントを再度開くかどうかを示します。 |
m_bSaveDocumentInfoOnIdle | データ回復ハンドラーが次のアイドル ループでドキュメントを自動保存するかどうかを示します。 |
m_bShutdownByRestartManager | 再起動マネージャーによってアプリケーションが終了するかどうかを示します。 |
m_dwRestartManagerSupportFlags | 再起動マネージャーがアプリケーションに提供するサポートを示すフラグ。 |
m_lstAutosavesToDelete | 元のドキュメントが閉じられたときに削除されなかった自動保存されたファイルの一覧。 アプリケーションが終了すると、再起動マネージャーはファイルの削除を再試行します。 |
m_mapDocNameToAutosaveName | 自動保存されたファイル名へのドキュメント名のマップ。 |
m_mapDocNameToDocumentPtr | CDocument ポインターへのドキュメント名のマップ。 |
m_mapDocNameToRestoreBool | 自動保存されたドキュメントを復元するかどうかを示すブール型パラメーターへのドキュメント名のマップ。 |
m_mapDocumentPtrToDocName | ドキュメント名へのポインターのマップ CDocument 。 |
m_mapDocumentPtrToDocTitle | ドキュメント タイトル CDocument へのポインターのマップ。 これらのタイトルは、ファイルの保存に使用されます。 |
m_nAutosaveInterval | 自動保存の間の時間 (ミリ秒単位)。 |
m_nTimerID | 自動保存タイマーの識別子。 |
m_strAutosavePath | 自動保存されたドキュメントが格納される場所。 |
m_strRestartIdentifier | 再起動マネージャーの GUID の文字列表現。 |
解説
再起動マネージャーは、クラスを CDataRecoveryHandler
使用して開いているすべてのドキュメントを追跡し、必要に応じて自動保存します。 自動保存を有効にするには、CDataRecoveryHandler::SetSaveDocumentInfoOnIdle メソッドを使用します。 このメソッドは、次の CDataRecoveryHandler
アイドル ループで自動保存を実行するように指示します。 再起動マネージャーは、自動保存をCDataRecoveryHandler
実行する必要があるときに呼び出しますSetSaveDocumentInfoOnIdle
。
クラスのすべてのメソッド CDataRecoveryHandler
は仮想です。 このクラスのメソッドをオーバーライドして、独自のカスタム データ回復ハンドラーを作成します。 独自のデータ回復ハンドラーまたは再起動マネージャーを作成しない限り、CDataRecoveryHandler をインスタンス化しないでください。 CWinApp クラスは、必要に応じてオブジェクトをCDataRecoveryHandler
作成します。
オブジェクトを使用CDataRecoveryHandler
する前に、CDataRecoveryHandler::Initialize を呼び出す必要があります。
CDataRecoveryHandler
クラスは再起動マネージャーに密接に接続されているため、CDataRecoveryHandler
グローバル パラメーターm_dwRestartManagerSupportFlags
によって異なります。 このパラメーターは、再起動マネージャーが持つアクセス許可とアプリケーションとの対話方法を決定します。 再起動マネージャーを既存のアプリケーションに組み込むには、メイン アプリケーションのコンストラクターに適切な値を割り当てるm_dwRestartManagerSupportFlags
必要があります。 再起動マネージャーの使用方法の詳細については、「方法: 再起動マネージャーのサポートを追加する」を参照してください。
必要条件
ヘッダー: afxdatarecovery.h
CDataRecoveryHandler::AutosaveAllDocumentInfo
クラスに登録されている各ファイルを CDataRecoveryHandler
自動保存します。
virtual BOOL AutosaveAllDocumentInfo();
戻り値
すべてのドキュメントを保存したCDataRecoveryHandler
場合は TRUE。FAL Standard Editionドキュメントが保存されていない場合。
解説
保存する必要があるドキュメントがない場合、このメソッドは TRUE を返します。 また、アプリケーションの取得時にCDocManager
エラーが発生した場合は、ドキュメントをCWinApp
保存せずに TRUE を返します。
このメソッドを使用するには、AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTARTまたはAFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVALを設定 m_dwRestartManagerSupportFlags
する必要があります。 詳細については、「方法: 再起動マネージャーのサポートを追加する」を参照してください。
CDataRecoveryHandler::AutosaveDocumentInfo
指定したドキュメントを自動保存します。
virtual BOOL AutosaveDocumentInfo(
CDocument* pDocument,
BOOL bResetModifiedFlag = TRUE);
パラメーター
pDocument
[in]保存するオブジェクト CDocument
へのポインター。
bResetModifiedFlag
[in]TRUE は、pDocument が変更されると見なされることをCDataRecoveryHandler
示します。FAL Standard Edition は、フレームワークが pDocument を変更されていないと見なしていることを示します。 このフラグの効果の詳細については、「解説」セクションを参照してください。
戻り値
適切なフラグが設定され、 pDocument が有効な CDocument
オブジェクトである場合は TRUE。
解説
各 CDocument
オブジェクトには、前回の保存以降に変更されたかどうかを示すフラグがあります。 CDocument::IsModified を使用して、このフラグの状態を確認します。 前回の保存以降に a CDocument
が変更されていない場合は、 AutosaveDocumentInfo
そのドキュメントの自動保存されたファイルを削除します。 前回の保存以降にドキュメントが変更された場合は、閉じる前にドキュメントを保存するようにユーザーに求められます。
Note
bResetModifiedFlag を使用してドキュメントの状態を未変更に変更すると、ユーザーが保存されていないデータを失う可能性があります。 フレームワークでドキュメントが変更されていないと見なされた場合、閉じてもユーザーに保存を求めるメッセージは表示されません。
pDocument が有効なCDocument
オブジェクトでない場合、このメソッドは AS Standard Edition RT マクロで例外をスローします。
このメソッドを使用するには、AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTARTまたはAFX_RESTARTMANAGER_AUTOSAVE_AT_INTERVALをm_dwRestartManagerSupportFlagsで設定する必要があります。
CDataRecoveryHandler::CDataRecoveryHandler
CDataRecoveryHandler
オブジェクトを構築します。
CDataRecoveryHandler(
DWORD dwRestartManagerSupportFlags,
int nAutosaveInterval);
パラメーター
dwRestartManagerSupportFlags
[in]サポートされている再起動マネージャーのオプションを示します。
nAutosaveInterval
[in]自動保存の間隔。 このパラメーターはミリ秒単位です。
解説
MFC フレームワークは、新しいプロジェクト ウィザードをCDataRecoveryHandler
使用すると、アプリケーションのオブジェクトを自動的に作成します。 データ回復動作または再起動マネージャーをカスタマイズする場合を除き、オブジェクトを CDataRecoveryHandler
作成しないでください。
CDataRecoveryHandler::CreateDocumentInfo
開いているドキュメントの一覧にドキュメントを追加します。
virtual BOOL CreateDocumentInfo(CDocument* pDocument);
パラメーター
pDocument
[in]へのポインター。CDocument
このメソッドは、この CDocument
ドキュメント情報を作成します。
戻り値
既定の実装では、TRUE が返されます。
解説
このメソッドは、ドキュメントを追加する前に pDocument が既にドキュメントの一覧に含まれている場合にチェックします。 pDocument が既に一覧にある場合、このメソッドは pDocument に関連付けられている自動保存されたファイルを削除します。
このメソッドを使用するには、AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTARTまたはAFX_RESTARTMANAGER_AUTOSAVE_AT_INTERVALをm_dwRestartManagerSupportFlagsで設定する必要があります。
CDataRecoveryHandler::D eleteAllAutosavedFiles
現在自動保存されているすべてのファイルを削除します。
virtual BOOL DeleteAllAutosavedFiles();
戻り値
既定の実装では常に TRUE が返されます。
CDataRecoveryHandler::D eleteAutosavedFile
指定した自動保存ファイルを削除します。
virtual BOOL DeleteAutosavedFile(const CString& strAutosavedFile);
パラメーター
strAutosavedFile
[in]自動保存されたファイル名を含む文字列。
戻り値
既定の実装では常に TRUE が返されます。
解説
このメソッドは、自動保存されたファイルを削除できない場合は、ファイルの名前を一覧に保存します。 リストで CDataRecoveryHandler
指定された自動保存された各ファイルの削除を試みるデストラクター。
CDataRecoveryHandler::GenerateAutosaveFileName
指定されたドキュメント ファイル名に関連付けられている自動保存ファイルの名前を生成します。
virtual CString GenerateAutosaveFileName(const CString& strDocumentName) const;
パラメーター
strDocumentName
[in]ドキュメント名を含む文字列。 GenerateAutosaveFileName
は、このドキュメント名を使用して、対応する自動保存ファイル名を生成します。
戻り値
strDocumentName から生成された自動保存ファイル名。
解説
各ドキュメント名には、自動保存ファイル名を持つ 1 対 1 のマッピングがあります。
CDataRecoveryHandler::GetAutosaveInterval
自動保存の試行間隔を返します。
virtual int GetAutosaveInterval() const;
戻り値
自動保存が試行されるまでのミリ秒数。
CDataRecoveryHandler::GetAutosavePath
自動保存されたファイルのパスを返します。
virtual CString GetAutosavePath() const;
戻り値
自動保存されたドキュメントが格納される場所。
CDataRecoveryHandler::GetDocumentListName
オブジェクトからドキュメント名を CDocument
取得します。
virtual CString GetDocumentListName(CDocument* pDocument) const;
パラメーター
pDocument
[in]へのポインター。CDocument
GetDocumentListName
から CDocument
ドキュメント名を取得します。
戻り値
pDocument のドキュメント名。
解説
ドキュメントCDataRecoveryHandler
名は、m_mapDocNameToAutosaveName、m_mapDocNameToDocumentPtr、およびm_mapDocNameToRestoreBoolのキーとして使用されます。 これらのパラメーターを CDataRecoveryHandler
使用すると、オブジェクト、自動保存ファイル名、および自動保存設定を監視 CDocument
できます。
CDataRecoveryHandler::GetNormalDocumentTitle
指定した文書の通常のタイトルを取得します。
virtual CString GetNormalDocumentTitle(CDocument* pDocument);
パラメーター
pDocument
[in]へのポインター。CDocument
戻り値
指定した文書の通常のタイトル。
解説
通常、ドキュメントの通常のタイトルは、パスのないドキュメントのファイル名です。 これは、[名前を付けて保存] ダイアログ ボックスの [ファイル名] フィールドのタイトルです。
CDataRecoveryHandler::GetRecoveredDocumentTitle
復元されたドキュメントのタイトルを作成して返します。
virtual CString GetRecoveredDocumentTitle(const CString& strDocumentTitle) const;
パラメーター
strDocumentTitle
[in]ドキュメントの通常のタイトル。
戻り値
回復されたドキュメントのタイトル。
解説
既定では、ドキュメントの復元されたタイトルは、通常のタイトルに [recovered] が 追加されます。 自動保存されたドキュメントを復元するためにユーザーにクエリを CDataRecoveryHandler
実行すると、回復されたタイトルがユーザーに表示されます。
CDataRecoveryHandler::GetRestartIdentifier
アプリケーションの一意の再起動識別子を取得します。
virtual CString GetRestartIdentifier() const;
戻り値
一意の再起動識別子。
解説
再起動識別子は、アプリケーションの実行ごとに一意です。
レジストリ CDataRecoveryHandler
には、現在開いているドキュメントに関する情報が格納されます。 再起動マネージャーは、アプリケーションを終了して再起動すると、再起動識別子を CDataRecoveryHandler
. 再起動 CDataRecoveryHandler
識別子を使用して、以前に開いているドキュメントの一覧を取得します。 これにより、 CDataRecoveryHandler
自動保存されたファイルを検索して復元できます。
CDataRecoveryHandler::GetSaveDocumentInfoOnIdle
現在のアイドル ループで CDataRecoveryHandler
自動保存を実行するかどうかを示します。
virtual BOOL GetSaveDocumentInfoOnIdle() const;
戻り値
TRUE は、現在のCDataRecoveryHandler
アイドル ループでの自動保存を示します。FAL Standard Edition は、それがないことを示します。
CDataRecoveryHandler::GetShutdownByRestartManager
再起動マネージャーによってアプリケーションが終了したかどうかを示します。
virtual BOOL GetShutdownByRestartManager() const;
戻り値
TRUE は、再起動マネージャーによってアプリケーションが終了したことを示します。FAL Standard Edition は、そうでないことを示します。
CDataRecoveryHandler::Initialize
CDataRecoveryHandler
を初期化します。
virtual BOOL Initialize();
戻り値
初期化が成功した場合は TRUE。それ以外の場合は FAL Standard Edition。
解説
初期化プロセスは、レジストリから自動保存ファイルを格納するためのパスを読み込みます。 メソッドでこのディレクトリが Initialize
見つからない場合、またはパスが NULL の場合は失敗 Initialize
して返されます FALSE
。
CDataRecoveryHandler::SetAutosavePath を使用して、アプリケーションCDataRecoveryHandler
で .
メソッドは Initialize
、次の自動保存が発生したときに監視するタイマーも開始します。 CDataRecoveryHandler::SetAutosaveInterval を使用して、アプリケーションCDataRecoveryHandler
で .
CDataRecoveryHandler::QueryRestoreAutosavedDocuments
自動保存された各ドキュメントのダイアログ ボックスをユーザーに CDataRecoveryHandler
表示します。 ダイアログ ボックスは、ユーザーが自動保存されたドキュメントを復元するかどうかを決定します。
virtual void QueryRestoreAutosavedDocuments();
解説
アプリケーションが Unicode の場合、このメソッドはユーザーに CTaskDialog を表示します。 それ以外の場合、フレームワークは AfxMessageBox を使用してユーザーにクエリを実行します。
ユーザーからのすべての応答を収集した後 QueryRestoreAutosavedDocuments
、情報をメンバー変数 m_mapDocNameToRestoreBoolに格納します。 このメソッドは、自動保存されたドキュメントを復元しません。
CDataRecoveryHandler::ReadOpenDocumentList
開いているドキュメントの一覧をレジストリから読み込みます。
virtual BOOL ReadOpenDocumentList();
戻り値
TRUE は、レジストリから少なくとも 1 つのドキュメントの情報を読み込んだことをReadOpenDocumentList
示します。FAL Standard Edition は、ドキュメント情報が読み込まれていないことが示されます。
解説
この関数は、開いているドキュメント情報をレジストリから読み込み、m_mapDocNameToAutosaveNameメンバー変数に格納します。
すべてのデータを読み込んだ後 ReadOpenDocumentList
、レジストリからドキュメント情報が削除されます。
CDataRecoveryHandler::RemoveDocumentInfo
指定したドキュメントを開いているドキュメント リストから削除します。
virtual BOOL RemoveDocumentInfo(CDocument* pDocument);
パラメーター
pDocument
[in]削除するドキュメントへのポインター。
戻り値
リストから pDocument が削除された場合は TRUE。FAL Standard Edition エラーが発生した場合。
解説
ユーザーがドキュメントを閉じると、フレームワークはこのメソッドを使用して、開いているドキュメントの一覧からドキュメントを削除します。
開いているドキュメントの一覧に pDocument が見つからない場合RemoveDocumentInfo
は、何も実行せず、TRUE を返します。
このメソッドを使用するには、AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILESを m_dwRestartManagerSupportFlags で設定する必要があります。
CDataRecoveryHandler::ReopenPreviousDocuments
以前に開いたドキュメントを開きます。
virtual BOOL ReopenPreviousDocuments();
戻り値
少なくとも 1 つのドキュメントが開かれた場合は TRUE。それ以外の場合は FAL Standard Edition。
解説
このメソッドは、以前に開いたドキュメントの最新の保存を開きます。 ドキュメントが保存または自動保存されていない場合は、 ReopenPreviousDocuments
そのファイルの種類のテンプレートに基づいて空白のドキュメントを開きます。
このメソッドを使用するには、AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILESを m_dwRestartManagerSupportFlags で設定する必要があります。 このパラメーターが設定されていない場合は、何も実行せず、 ReopenPreviousDocuments
FAL Standard Edition を返します。
以前に開いているドキュメントの一覧にドキュメントが格納されていない場合は、何も実行せず、 ReopenPreviousDocuments
FAL Standard Edition を返します。
CDataRecoveryHandler::RestoreAutosavedDocuments
ユーザー入力に基づいて自動保存されたドキュメントを復元します。
virtual BOOL RestoreAutosavedDocuments();
戻り値
このメソッドがドキュメントを正常に復元する場合は TRUE。
解説
このメソッドは CDataRecoveryHandler::QueryRestoreAutosavedDocuments を呼び出して、ユーザーが復元するドキュメントを決定します。 ユーザーが自動保存されたドキュメントを復元しない場合は、 RestoreAutosavedDocuments
自動保存ファイルを削除します。 それ以外の場合は、 RestoreAutosavedDocuments
開いているドキュメントを自動保存されたバージョンに置き換えます。
このメソッドを使用するには、AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILESまたはAFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILESを > で m_dwRestartManagerSupportFlags
設定する必要があります。
CDataRecoveryHandler::SaveOpenDocumentList
開いているドキュメントの現在の一覧を Windows レジストリに保存します。
virtual BOOL SaveOpenDocumentList();
戻り値
保存する開いているドキュメントがない場合、または正常に保存された場合は TRUE。 FAL Standard Editionレジストリに保存するドキュメントがあるが、エラーが発生したために保存されなかった場合。
解説
再起動マネージャーは、アプリケーションが予期せず終了したとき、またはアップグレードのためにアプリケーションが終了したときに呼び出 SaveOpenDocumentList
されます。 アプリケーションが再起動すると、CDataRecoveryHandler::ReadOpenDocumentList を使用して開いているドキュメントの一覧が取得されます。
このメソッドは、開いているドキュメントの一覧のみを保存します。 CDataRecoveryHandler::AutosaveDocumentInfo メソッドは、ドキュメント自体を保存します。
CDataRecoveryHandler::SetAutosaveInterval
自動保存サイクル間の時間をミリ秒単位で設定します。
Virtual void SetAutosaveInterval(int nAutosaveInterval);
パラメーター
nAutosaveInterval
[in]新しい自動保存間隔 (ミリ秒)。
CDataRecoveryHandler::SetAutosavePath
自動保存されたファイルが格納されるディレクトリを設定します。
virtual void SetAutosavePath(const CString& strAutosavePath);
パラメーター
strAutosavePath
[in]自動保存ファイルが格納されるパス。
解説
自動保存ディレクトリを変更しても、現在自動保存されているファイルは移動されません。
CDataRecoveryHandler::SetRestartIdentifier
のこのインスタンスの一意の再起動識別子を設定します CDataRecoveryHandler
。
virtual void SetRestartIdentifier(const CString& strRestartIdentifier);
パラメーター
strRestartIdentifier
[in]再起動マネージャーの一意の識別子。
解説
再起動マネージャーは、開いているドキュメントに関する情報をレジストリに記録します。 この情報は、キーとして一意の再起動識別子と共に格納されます。 再起動識別子はアプリケーションのインスタンスごとに一意であるため、アプリケーションの複数のインスタンスが予期せず終了し、再起動マネージャーが各インスタンスを復旧できます。
CDataRecoveryHandler::SetSaveDocumentInfoOnIdle
現在のアイドル サイクル中に CDataRecoveryHandler
開いているドキュメント情報を Windows レジストリに保存するかどうかを設定します。
virtual void SetSaveDocumentInfoOnIdle(BOOL bSaveOnIdle);
パラメーター
bSaveOnIdle
[in]現在のアイドル サイクル中にドキュメント情報を保存する場合は TRUE。FAL Standard Edition保存を実行しません。
CDataRecoveryHandler::SetShutdownByRestartManager
アプリケーションの前回の終了が再起動マネージャーによって発生したかどうかを設定します。
virtual void SetShutdownByRestartManager(BOOL bShutdownByRestartManager);
パラメーター
bShutdownByRestartManager
[in]再起動マネージャーによってアプリケーションが終了したことを示す場合は TRUE。FAL Standard Edition アプリケーションが別の理由で終了したことを示します。
解説
フレームワークの動作は、前の出口が予期しないものかどうか、または再起動マネージャーによって開始されたかどうかによって異なります。
CDataRecoveryHandler::UpdateDocumentInfo
ユーザーがドキュメントを保存したため、ドキュメントの情報を更新します。
virtual BOOL UpdateDocumentInfo(CDocument* pDocument);
パラメーター
pDocument
[in]保存されたドキュメントへのポインター。
戻り値
このメソッドが自動保存されたドキュメントを削除し、ドキュメント情報を更新した場合は TRUE。FAL Standard Edition エラーが発生した場合。
解説
ユーザーがドキュメントを保存すると、自動保存されたファイルは不要になるため、アプリケーションによって削除されます。 UpdateDocumentInfo
は、CDataRecoveryHandler::RemoveDocumentInfo を呼び出 して、自動保存されたファイルを削除します。 UpdateDocumentInfo
その後、pDocument から現在開いているドキュメントの一覧に情報を追加します。この情報は削除されますが、保存されたドキュメントは開いたままであるためRemoveDocumentInfo
です。
このメソッドを使用するには、AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILESを m_dwRestartManagerSupportFlags で設定する必要があります。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示