다음을 통해 공유


사용자 지정 문서 저장

환경은 저장, 다른 이름으로 저장모두 저장 명령을 처리합니다. 사용자가 파일 메뉴에서 저장, 다른 이름으로 저장 또는 모두 저장을 클릭하거나 솔루션을 닫으면 모두 저장이 수행됩니다.

Customer Editor Save 사용자 지정 편집기에 대한 Save, Save As, Save All 명령 처리

이 프로세스는 다음 단계에 자세히 설명되어 있습니다.

  1. 다른 이름으로 저장다른 이름으로 저장 명령의 경우 환경은 SVsShellMonitorSelection 서비스를 사용하여 현재 문서 창과 저장해야 하는 항목을 결정합니다. 활성 문서 창이 알려지면 환경은 실행 중인 문서 테이블에서 문서의 계층 구조 포인터와 itemID(항목 식별자)를 찾습니다. 자세한 내용은 문서 테이블 실행을 참조하세요.

    모두 저장 명령의 경우 환경은 실행 중인 문서 테이블의 정보를 사용하여 저장할 모든 항목의 목록을 컴파일합니다.

  2. 솔루션이 QueryStatus 호출을 받으면 선택한 항목 집합(즉, SVsShellMonitorSelection 서비스에서 노출하는 여러 선택 항목)을 반복합니다.

  3. 선택 영역의 각 항목에서 솔루션은 계층 구조 포인터를 사용하여 IsItemDirty 메서드를 호출함으로써 저장 메뉴 명령을 사용할지 여부를 결정합니다. 항목 하나 이상이 더티인 경우 저장 명령을 사용합니다. 계층에서 표준 편집기를 사용하는 경우 계층 구조는 IsDocDataDirty 메서드를 호출하여 더티 상태에 대한 쿼리를 편집기로 위임합니다.

  4. 더티인 선택한 각 항목에서 솔루션은 계층 포인터를 사용하여 적절한 계층에서 SaveItem 메서드를 호출합니다.

    사용자 지정 편집기의 경우 문서 데이터 개체와 프로젝트 간의 통신은 비공개입니다. 따라서 이러한 두 개체 간에 특별한 지속성 문제가 처리됩니다.

    참고 항목

    고유한 지속성을 구현하는 경우 시간을 절약하기 위해 QuerySaveFiles 메서드를 호출해야 합니다. 이 메서드는 파일을 저장하는 것이 안전한지 확인합니다(예: 파일이 읽기 전용이 아님).