CArchive 개체를 만드는 두 가지 방법
개체를 만드는 방법에는 두 가지가 있습니다.CArchive
프레임워크를 통해 CArchive 개체의 암시적 생성
가장 일반적이고 쉬운 방법은 프레임워크가 파일 메뉴의 저장, 다른 이름으로 저장 및 열기 명령을 대신하여 문서에 대한 개체를 만들 CArchive
도록 하는 것입니다.
애플리케이션 사용자가 파일 메뉴에서 다른 이름으로 저장 명령을 발급할 때 프레임워크가 수행하는 일은 다음과 같습니다.
다른 이름으로 저장 대화 상자를 표시하고 사용자로부터 파일 이름을 가져옵니다.
사용자가 개체로
CFile
명명한 파일을 엽니다.이
CFile
개체를CArchive
가리키는 개체를 만듭니다. 개체를CArchive
만들 때 프레임워크는 "로드"(읽기, 역직렬화)가 아닌 모드를 "저장"(쓰기, 직렬화)으로 설정합니다.Serialize
파생 클래스에CDocument
정의된 함수를 호출하여 개체에 대한 참조를CArchive
전달합니다.
그러면 문서의 Serialize
함수는 곧 설명한 대로 개체에 CArchive
데이터를 씁니다. 함수에서 Serialize
돌아오면 프레임워크는 개체를 CArchive
삭제한 다음 개체를 CFile
삭제합니다.
따라서 프레임워크에서 문서에 대한 개체를 만들 CArchive
도록 허용하면 보관 파일에서 쓰고 읽는 문서의 Serialize
함수를 구현하기만 하면 됩니다. 또한 문서의 Serialize
함수가 직접 또는 간접적으로 직렬화하는 파생 개체에 대해서도 구현 Serialize
CObject
해야 합니다.
CArchive 개체의 명시적 생성
프레임워크를 통해 문서를 직렬화하는 것 외에도 개체가 필요할 CArchive
수 있는 경우도 있습니다. 예를 들어 개체가 나타내는 CSharedFile
클립보드에서 데이터를 직렬화할 수 있습니다. 또는 프레임워크에서 제공하는 것과 다른 파일을 저장하기 위해 사용자 인터페이스를 사용할 수 있습니다. 이 경우 개체를 CArchive
명시적으로 만들 수 있습니다. 다음 절차를 사용하여 프레임워크와 동일한 방식으로 이 작업을 수행합니다.
CArchive 개체를 명시적으로 만들려면
CFile
에서 파생된 개체 또는 개체를CFile
생성합니다.CFile
다음 예제와 같이 개체를 생성자에CArchive
전달합니다.CFile theFile; theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite); CArchive archive(&theFile, CArchive::store);
생성자에 대한
CArchive
두 번째 인수는 파일에서 데이터를 저장하거나 로드하는 데 보관을 사용할지 여부를 지정하는 열거형 값입니다. 개체의 함수는Serialize
보관 개체의 함수를 호출IsStoring
하여 이 상태를 검사.
개체에 대한 데이터 CArchive
저장 또는 로드를 마치면 닫습니다. CArchive
(및CFile
) 개체는 보관 파일(및 파일)을 자동으로 닫지만 오류 복구를 더 쉽게 수행할 수 있으므로 명시적으로 닫는 것이 좋습니다. 오류 처리에 대한 자세한 내용은 예외: 예외 Catch 및 삭제 문서를 참조하세요.
CArchive 개체를 닫려면
다음 예제에서는 개체를 닫는 방법을 보여 줍니다
CArchive
.archive.Close(); theFile.Close();