다음을 통해 공유


IOleParentUndoUnit 인터페이스(ocidl.h)

실행 취소 단위가 자식 실행 취소 단위를 포함하도록 설정합니다. 예를 들어 여러 개별 작업이 관련되어 있더라도 복잡한 작업을 단일 실행 취소 작업으로 최종 사용자에게 표시할 수 있습니다. 모든 하위 실행 취소 작업은 최상위 부모 실행 취소 단위 내에 포함됩니다.

부모 실행 취소 단위는 처음에 IOleUndoManager::Open 메서드를 사용하여 만들어집니다. 실행 취소 단위의 추가는 항상 실행 취소 관리자를 통해 수행해야 합니다. 부모 단위의 IOleParentUndoUnit::OpenIOleParentUndoUnit::Close 메서드는 실행 취소 관리자에 의해 호출됩니다. 부모 단위가 실행 취소 관리자로 다시 호출되면 무한 재귀가 발생합니다.

부모 단위가 열려 있는 동안 실행 취소 관리자는 IOleParentUndoUnit::Add를 호출하여 실행 취소 단위를 추가합니다. 실행 취소 관리자가 최상위 부모를 닫으면 중첩된 하위 항목이 있는 전체 실행 취소 단위가 실행 취소 스택 위에 배치됩니다.

사용 가능한 부모는 스택에서 열어야 다른 실행 취소 단위를 추가할 수 있습니다. 열려 있지 않으면 스택을 대신 지워야 합니다. 이는 실행 취소 단위가 프로그래밍 방식 작업이 아닌 사용자 작업의 결과로 추가되도록 하기 위한 것입니다. 예를 들어 애플리케이션에서 특정 단추를 클릭하여 실행 취소할 수 있도록 하려는 경우 개체 모델을 통해 동일한 작업도 노출됩니다. 사용자 스크립트 코드의 상태를 복원할 수 없으므로 해당 작업은 사용자 인터페이스를 통해 실행 취소할 수 있지만 개체 모델은 실행 취소할 수 없습니다. 동일한 코드가 두 경우 모두 변경을 구현하기 때문에 단추 클릭을 처리하는 UI 코드는 스택에서 사용 가능한 부모를 열고 적절한 코드를 호출한 다음 부모 단위를 닫아야 합니다. 개체 모델 코드가 부모 단위를 열지 않아 실행 취소 스택이 지워지게 됩니다.

차단 부모는 코드가 스택에 실행 취소 단위를 추가하려고 시도할 수 있는 다른 코드를 호출하지 않으려는 경우에 사용됩니다. 예를 들어 실행 취소 단위를 만드는 코드를 호출하는 경우 차단 부모를 사용해야 하며, 외부 코드가 이미 생성되어 원하는 모든 동작을 완전히 실행 취소합니다.

사용하지 않는 부모는 사용자 작업에 대한 응답으로 이벤트를 발생시키는 경우에 사용됩니다. 이벤트 처리기가 실행 취소 단위를 만들려고 시도한 작업을 수행한 경우에만 스택이 지워지지만 처리기가 없으면 실행 취소 스택이 유지됩니다.

개체가 부모 단위를 만들어야 하는 경우 고려해야 할 몇 가지 경우가 있습니다.

  • 사용 가능한 부모 단위를 만들기 위해 개체는 실행 취소 관리자 에서 IOleUndoManager::GetOpenParentState 를 호출하고 반환 값을 확인합니다. 값이 S_FALSE 경우 개체는 사용 가능한 부모를 만들고 엽니다. 반환 값이 S_OK 경우 부모가 이미 열려 있습니다. 열려 있는 부모가 차단(UAS_BLOCKED 비트 집합) 또는 사용 가능한 부모(UAS_BLOCKED 및 UAS_NOPARENTENABLE 비트가 설정되지 않은 경우)를 사용하도록 설정하는 부모를 만들 필요가 없습니다. 현재 열려 있는 부모가 사용 안 함 부모(UAS_NOPARENTENABLE 비트 집합)인 경우 실행 취소 단위 추가를 다시 사용하도록 설정하려면 사용 가능한 부모를 만들고 열어야 합니다. UAS_NORMAL 값이 0입니다. 즉, 다른 모든 비트가 없으며 설정할 수 있는 비트 플래그가 아닙니다. *pdwState 를 UAS_NORMAL 비교하는 경우 향후 확장을 허용하도록 pdwState 에서 사용되지 않는 비트를 UAS_MASK 마스킹합니다.
  • 차단된 부모를 만들기 위해 개체는 IOleUndoManager::GetOpenParentState 를 호출하고 이미 차단된 열린 부모를 확인합니다. 있는 경우 새 차단 부모를 만들 필요가 없습니다. 그렇지 않으면 개체가 만들어 스택에서 엽니다.
  • 사용하지 않도록 설정하는 부모를 만들기 위해 개체는 IOleUndoManager::GetOpenParentState 를 호출하고 차단되거나 사용하지 않도록 설정되는 열린 부모를 확인합니다. 둘 중 하나가 있는 경우 새 부모를 만들 필요가 없습니다. 그렇지 않으면 개체가 부모를 만들고 스택에서 엽니다.
UAS_NOPARENTENABLE 플래그와 UAS_BLOCKED 플래그가 모두 설정된 경우 호출자와 가장 관련된 플래그를 UAS_NOPARENTENABLE 우선적으로 사용해야 합니다. 예를 들어 개체가 간단한 실행 취소 단위를 만드는 경우 UAS_NOPARENTENABLE 플래그에 주의를 기울이고 실행 취소 스택을 지워야 합니다. 사용 가능한 부모 단위를 만드는 경우 UAS_BLOCKED 플래그에 주의를 기울이고 만들기를 건너뛰어야 합니다.

부모 실행 취소 단위가 차단된 것으로 표시되면 수신된 실행 취소 단위를 모두 삭제합니다.

상속

IOleParentUndoUnit 인터페이스는 IOleUndoUnit에서 상속됩니다. IOleParentUndoUnit 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

IOleParentUndoUnit 인터페이스에는 이러한 메서드가 있습니다.

 
IOleParentUndoUnit::Add

컬렉션에 간단한 실행 취소 단위를 추가합니다.
IOleParentUndoUnit::Close

지정된 부모 실행 취소 단위를 닫습니다. (IOleParentUndoUnit.Close)
IOleParentUndoUnit::FindUnit

지정된 단위가 이 실행 취소 단위의 자식인지 또는 해당 자식 중 하나인지, 즉 지정된 단위가 이 부모 단위의 계층 구조에 속하는지 여부를 나타냅니다.
IOleParentUndoUnit::GetParentState

가장 안쪽에 열려 있는 부모 실행 취소 단위에 대한 상태 정보를 검색합니다. (IOleParentUndoUnit.GetParentState)
IOleParentUndoUnit::Open

포함하는 단위의 실행 취소 스택의 일부가 되는 새 부모 실행 취소 단위를 엽니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 ocidl.h

추가 정보

IOleUndoManager

IOleUndoUnit