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();
Return Value
모든 문서를 저장한 CDataRecoveryHandler
경우 TRUE입니다. 문서가 저장되지 않은 경우 FALSE입니다.
설명
이 메서드는 저장해야 하는 문서가 없는 경우 TRUE를 반환합니다. 또한 애플리케이션을 검색 CWinApp
할 CDocManager
때 오류가 발생하는 경우 문서를 저장하지 않고 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는 CDataRecoveryHandler
pDocument를 수정할 것으로 간주한다는 것을 나타냅니다. FALSE는 프레임워크가 pDocument를 수정되지 않은 것으로 간주한다는 것을 나타냅니다. 이 플래그의 효과에 대한 자세한 내용은 설명 섹션을 참조하세요.
Return Value
적절한 플래그가 설정 되고 pDocument 가 유효한 CDocument
개체인 경우 TRUE입니다.
설명
각 CDocument
개체에는 마지막 저장 이후 변경되었는지를 나타내는 플래그가 있습니다. CDocument::IsModified를 사용하여 이 플래그의 상태를 확인합니다. CDocument
마지막 저장 AutosaveDocumentInfo
이후 변경 되지 않은 경우 해당 문서에 대 한 자동 저장 된 파일을 삭제 합니다. 마지막 저장 이후 문서가 변경된 경우 문서를 닫기 전에 문서를 저장하라는 메시지가 표시됩니다.
참고 항목
bResetModifiedFlag를 사용하여 문서의 상태를 수정되지 않은 상태로 변경하면 저장되지 않은 데이터가 손실될 수 있습니다. 프레임워크에서 수정되지 않은 문서를 고려하면 문서를 닫아도 사용자에게 저장하라는 메시지가 표시되지 않습니다.
pDocument가 유효한 CDocument
개체가 아닌 경우 이 메서드는 ASSERT 매크로를 사용하여 예외를 throw합니다.
이 메서드를 사용하려면 m_dwRestartManagerSupportFlags AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART 또는 AFX_RESTARTMANAGER_AUTOSAVE_AT_INTERVAL 설정해야 합니다.
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
대한 문서 정보를 만듭니다.
Return Value
기본 구현은 TRUE를 반환합니다.
설명
이 메서드는 문서를 추가하기 전에 pDocument가 이미 문서 목록에 있는지 확인합니다. pDocument가 이미 목록에 있는 경우 이 메서드는 pDocument와 연결된 자동 저장 파일을 삭제합니다.
이 메서드를 사용하려면 m_dwRestartManagerSupportFlags AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART 또는 AFX_RESTARTMANAGER_AUTOSAVE_AT_INTERVAL 설정해야 합니다.
CDataRecoveryHandler::D eleteAllAutosavedFiles
현재 자동 저장한 파일을 모두 삭제합니다.
virtual BOOL DeleteAllAutosavedFiles();
Return Value
기본 구현은 항상 TRUE를 반환합니다.
CDataRecoveryHandler::D eleteAutosavedFile
지정된 자동 저장 파일을 삭제합니다.
virtual BOOL DeleteAutosavedFile(const CString& strAutosavedFile);
매개 변수
strAutosavedFile
[in] 자동 저장 파일 이름을 포함하는 문자열입니다.
Return Value
기본 구현은 항상 TRUE를 반환합니다.
설명
이 메서드가 자동 저장 파일을 삭제할 수 없는 경우 파일 이름을 목록에 저장합니다. 해당 목록에 지정된 각 자동 저장 파일을 삭제하려고 시도하는 소멸자 CDataRecoveryHandler
입니다.
CDataRecoveryHandler::GenerateAutosaveFileName
제공된 문서 파일 이름과 연결된 자동 저장 파일의 이름을 생성합니다.
virtual CString GenerateAutosaveFileName(const CString& strDocumentName) const;
매개 변수
strDocumentName
[in] 문서 이름을 포함하는 문자열입니다. GenerateAutosaveFileName
에서는 이 문서 이름을 사용하여 해당 자동 저장 파일 이름을 생성합니다.
Return Value
strDocumentName에서 생성된 자동 저장 파일 이름입니다.
설명
각 문서 이름에는 자동 저장 파일 이름이 있는 일대일 매핑이 있습니다.
CDataRecoveryHandler::GetAutosaveInterval
자동 저장 시도 사이의 간격을 반환합니다.
virtual int GetAutosaveInterval() const;
Return Value
자동 저장 시도 사이의 시간(밀리초)입니다.
CDataRecoveryHandler::GetAutosavePath
자동 저장 파일의 경로를 반환합니다.
virtual CString GetAutosavePath() const;
Return Value
자동 저장 문서가 저장되는 위치입니다.
CDataRecoveryHandler::GetDocumentListName
개체에서 문서 이름을 검색 CDocument
합니다.
virtual CString GetDocumentListName(CDocument* pDocument) const;
매개 변수
pDocument
[in] 에 대한 포인터입니다 CDocument
. GetDocumentListName
에서 문서 이름을 CDocument
검색합니다.
Return Value
pDocument의 문서 이름입니다.
설명
문서 CDataRecoveryHandler
이름을 m_mapDocNameToAutosaveName, m_mapDocNameToDocumentPtr 및 m_mapDocNameToRestoreBool 키로 사용합니다. 이러한 매개 변수를 CDataRecoveryHandler
사용하면 개체, 자동 저장 파일 이름 및 자동 저장 설정을 모니터링 CDocument
할 수 있습니다.
CDataRecoveryHandler::GetNormalDocumentTitle
지정된 문서의 일반 제목을 검색합니다.
virtual CString GetNormalDocumentTitle(CDocument* pDocument);
매개 변수
pDocument
[in] 에 대한 포인터입니다 CDocument
.
Return Value
지정한 문서의 일반 제목입니다.
설명
일반적으로 문서의 일반 제목은 경로가 없는 문서의 파일 이름입니다. 다른 이름으로 저장 대화 상자의 파일 이름 필드에 있는 제목입니다.
CDataRecoveryHandler::GetRecoveredDocumentTitle
복구된 문서의 제목을 만들고 반환합니다.
virtual CString GetRecoveredDocumentTitle(const CString& strDocumentTitle) const;
매개 변수
strDocumentTitle
[in] 문서의 일반 제목입니다.
Return Value
복구된 문서 제목입니다.
설명
기본적으로 복구된 문서의 제목은 [복구됨]이 추가된 일반 제목입니다. 복구된 타이틀은 사용자가 자동 저장 문서를 복원하도록 쿼리할 때 CDataRecoveryHandler
사용자에게 표시됩니다.
CDataRecoveryHandler::GetRestartIdentifier
애플리케이션에 대한 고유 다시 시작 식별자를 검색합니다.
virtual CString GetRestartIdentifier() const;
Return Value
고유한 다시 시작 식별자입니다.
설명
다시 시작 식별자는 애플리케이션의 각 실행에 대해 고유합니다.
현재 CDataRecoveryHandler
열려 있는 문서에 대한 정보를 레지스트리에 저장합니다. 다시 시작 관리자는 애플리케이션을 종료하고 다시 시작하면 다시 시작 식별자를 CDataRecoveryHandler
제공합니다. 다시 CDataRecoveryHandler
시작 식별자를 사용하여 이전에 열린 문서 목록을 검색합니다. 이렇게 하면 CDataRecoveryHandler
자동 저장 파일을 찾아 복원할 수 있습니다.
CDataRecoveryHandler::GetSaveDocumentInfoOnIdle
현재 유휴 루프에서 CDataRecoveryHandler
자동 저장을 수행하는지 여부를 나타냅니다.
virtual BOOL GetSaveDocumentInfoOnIdle() const;
Return Value
TRUE는 CDataRecoveryHandler
현재 유휴 루프의 자동 저장을 나타냅니다. FALSE는 그렇지 않음을 나타냅니다.
CDataRecoveryHandler::GetShutdownByRestartManager
다시 시작 관리자가 애플리케이션을 종료했는지 여부를 나타냅니다.
virtual BOOL GetShutdownByRestartManager() const;
Return Value
TRUE는 다시 시작 관리자로 인해 애플리케이션이 종료되었음을 나타냅니다. FALSE는 그렇지 않음을 나타냅니다.
CDataRecoveryHandler::Initialize
CDataRecoveryHandler
을(를) 초기화합니다.
virtual BOOL Initialize();
Return Value
초기화에 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.
설명
초기화 프로세스는 레지스트리에서 자동 저장 파일을 저장하기 위한 경로를 로드합니다. 메서드가 Initialize
이 디렉터리를 찾을 수 없거나 경로가 NULL Initialize
이면 실패하고 반환됩니다 FALSE
.
CDataRecoveryHandler::SetAutosavePath를 사용하여 애플리케이션이 초기화한 후 자동 저장 경로를 변경합니다CDataRecoveryHandler
.
또한 이 메서드는 Initialize
다음 자동 저장이 발생할 때 모니터링할 타이머를 시작합니다. CDataRecoveryHandler::SetAutosaveInterval을 사용하여 애플리케이션이 초기화한 후 자동 저장 간격을 변경합니다CDataRecoveryHandler
.
CDataRecoveryHandler::QueryRestoreAutosavedDocuments
자동 저장한 각 문서에 CDataRecoveryHandler
대한 대화 상자를 사용자에게 표시합니다. 대화 상자는 사용자가 자동 저장 문서를 복원할지 여부를 결정합니다.
virtual void QueryRestoreAutosavedDocuments();
설명
애플리케이션이 유니코드인 경우 이 메서드는 사용자에게 CTaskDialog를 표시합니다. 그렇지 않으면 프레임워크는 AfxMessageBox를 사용하여 사용자를 쿼리합니다.
사용자의 모든 응답을 수집한 후 QueryRestoreAutosavedDocuments
m_mapDocNameToRestoreBool 멤버 변수에 정보를 저장합니다. 이 메서드는 자동 저장 문서를 복원하지 않습니다.
CDataRecoveryHandler::ReadOpenDocumentList
레지스트리에서 열린 문서 목록을 로드합니다.
virtual BOOL ReadOpenDocumentList();
Return Value
TRUE는 ReadOpenDocumentList
레지스트리에서 하나 이상의 문서에 대한 정보를 로드했음을 나타냅니다. FALSE는 문서 정보가 로드되지 않음을 나타냅니다.
설명
이 함수는 레지스트리에서 열린 문서 정보를 로드하고 m_mapDocNameToAutosaveName 멤버 변수에 저장합니다.
모든 데이터를 로드한 후 ReadOpenDocumentList
레지스트리에서 문서 정보를 삭제합니다.
CDataRecoveryHandler::RemoveDocumentInfo
열려 있는 문서 목록에서 제공된 문서를 제거합니다.
virtual BOOL RemoveDocumentInfo(CDocument* pDocument);
매개 변수
pDocument
[in] 제거할 문서에 대한 포인터입니다.
Return Value
목록에서 pDocument가 제거된 경우 TRUE입니다. 오류가 발생한 경우 FALSE입니다.
설명
사용자가 문서를 닫을 때 프레임워크는 이 메서드를 사용하여 열려 있는 문서 목록에서 문서를 제거합니다.
열려 있는 문서 목록에서 pDocument를 찾을 수 없는 경우 RemoveDocumentInfo
아무 작업도 수행하지 않으며 TRUE를 반환합니다.
이 메서드를 사용하려면 m_dwRestartManagerSupportFlags AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES 설정해야 합니다.
CDataRecoveryHandler::ReopenPreviousDocuments
이전에 연 문서를 엽니다.
virtual BOOL ReopenPreviousDocuments();
Return Value
문서가 하나 이상 열려 있으면 TRUE입니다. 그렇지 않으면 FALSE입니다.
설명
이 메서드는 이전에 열려 있는 문서의 가장 최근 저장을 엽니다. 문서가 저장되지 않았거나 자동 저장되지 ReopenPreviousDocuments
않은 경우 해당 파일 형식의 서식 파일을 기반으로 빈 문서를 엽니다.
이 메서드를 사용하려면 m_dwRestartManagerSupportFlags AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES 설정해야 합니다. 이 매개 변수를 설정 ReopenPreviousDocuments
하지 않으면 아무 작업도 수행하지 않고 FALSE를 반환합니다.
이전에 열려 있는 문서 목록에 저장된 문서가 ReopenPreviousDocuments
없으면 아무 작업도 수행하지 않고 FALSE를 반환합니다.
CDataRecoveryHandler::RestoreAutosavedDocuments
사용자 입력에 따라 자동 저장 문서를 복원합니다.
virtual BOOL RestoreAutosavedDocuments();
Return Value
이 메서드가 문서를 성공적으로 복원하면 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();
Return Value
저장할 열려 있는 문서가 없거나 성공적으로 저장된 경우 TRUE입니다. 레지스트리에 저장할 문서가 있지만 오류가 발생하여 저장되지 않은 경우 FALSE입니다.
설명
다시 시작 관리자는 애플리케이션이 예기치 않게 종료되거나 업그레이드를 위해 종료되는 경우 호출 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
현재 유휴 주기 동안 열려 있는 문서 정보를 Windows 레지스트리에 저장할지 여부를 CDataRecoveryHandler
설정합니다.
virtual void SetSaveDocumentInfoOnIdle(BOOL bSaveOnIdle);
매개 변수
bSaveOnIdle
[in] 현재 유휴 주기 동안 문서 정보를 저장하려면 TRUE입니다. 저장을 수행하지 않는 FALSE입니다.
CDataRecoveryHandler::SetShutdownByRestartManager
애플리케이션의 이전 종료가 다시 시작 관리자에 의해 발생했는지 여부를 설정합니다.
virtual void SetShutdownByRestartManager(BOOL bShutdownByRestartManager);
매개 변수
bShutdownByRestartManager
[in] TRUE이면 다시 시작 관리자가 애플리케이션을 종료했음을 나타냅니다. 다른 이유로 애플리케이션이 종료되었음을 나타내는 FALSE입니다.
설명
프레임워크는 이전 종료가 예기치 않은지 또는 다시 시작 관리자가 시작했는지 여부에 따라 다르게 동작합니다.
CDataRecoveryHandler::UpdateDocumentInfo
사용자가 저장했기 때문에 문서에 대한 정보를 업데이트합니다.
virtual BOOL UpdateDocumentInfo(CDocument* pDocument);
매개 변수
pDocument
[in] 저장된 문서에 대한 포인터입니다.
Return Value
이 메서드가 자동 저장 문서를 삭제하고 문서 정보를 업데이트한 경우 TRUE입니다. 오류가 발생한 경우 FALSE입니다.
설명
사용자가 문서를 저장하면 애플리케이션은 더 이상 필요하지 않으므로 자동 저장 파일을 제거합니다. UpdateDocumentInfo
는 CDataRecoveryHandler::RemoveDocumentInfo를 호출하여 자동 저장 파일을 삭제합니다. UpdateDocumentInfo
그런 다음 pDocument의 정보를 현재 열려 있는 문서 RemoveDocumentInfo
목록에 추가합니다. 해당 정보는 삭제되지만 저장된 문서는 여전히 열려 있기 때문입니다.
이 메서드를 사용하려면 m_dwRestartManagerSupportFlags AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES 설정해야 합니다.