IOleObject::Close 메서드(oleidl.h)

포함된 개체를 실행 중에서 로드된 상태로 변경합니다. 링크 원본에서 연결된 개체의 연결을 끊습니다.

구문

HRESULT Close(
  [in] DWORD dwSaveOption
);

매개 변수

[in] dwSaveOption

로드된 상태로 전환의 일부로 개체를 저장할지 여부를 나타냅니다. 유효한 값은 열거형 OLECLOSE에서 가져옵니다.

참고 OLE 2 사용자 모델은 개체 애플리케이션이 활성화된 개체를 포함하여 연결된 개체 또는 포함된 개체를 저장하기 전에 사용자에게 메시지를 표시하지 않는 것이 좋습니다. 이 정책은 OLE 1 사용자 모델의 변경 내용을 나타내며, 개체 애플리케이션은 항상 사용자에게 변경 내용을 저장할지 여부를 결정하라는 메시지를 표시합니다.
 

반환 값

이 메서드는 성공에 대한 S_OK 반환합니다. 가능한 다른 반환 값은 다음과 같습니다.

반환 코드 설명
OLE_E_PROMPTSAVECANCELLED
사용자에게 저장하라는 메시지가 표시되었지만 프롬프트 메시지 상자에서 취소 단추를 선택했습니다.

설명

발신자에 대한 참고 사항

컨테이너 애플리케이션은 실행 중인 개체에서 로드된 상태로 개체를 이동하려는 경우 IOleObject::Close 를 호출합니다. 이러한 호출 후 개체는 컨테이너에 계속 표시되지만 편집을 위해 열려 있지 않습니다. 로드되었지만 실행되지 않는 개체에서 IOleObject::Close 를 호출해도 아무런 효과가 없습니다. 연결된 개체를 닫는 것은 단순히 연결을 끊는 것을 의미합니다.

구현자에 대한 참고 사항

IOleObject::Close에 대한 호출을 받으면 실행 중인 개체는 다음을 수행해야 합니다.
  • 편집을 위해 마지막으로 연 이후 개체가 변경된 경우 dwSaveOption에 지정된 지침에 따라 저장 여부를 요청해야 합니다. 개체를 저장하는 옵션인 경우 해당 컨테이너의 IOleClientSite::SaveObject 인터페이스를 호출해야 합니다.
  • 개체에 ADVF_DATAONSTOP 플래그와 IDataObject::D Advise 연결이 있는 경우 IAdviseSink::OnDataChange 알림을 보내야 합니다. 자세한 내용은 IDataObject::D Advise 를 참조하세요.
  • 개체가 현재 클립보드를 소유하는 경우 OleFlushClipboard를 호출하여 비워야 합니다.
  • 개체가 현재 표시되는 경우 fshow 인수가 FALSE로 설정된 IOleClientSite::OnShowWindow를 호출하여 컨테이너에 알립니다.
  • 적절한 조언 싱크 에 IAdviseSink::OnClose 알림을 보냅니다.
  • 마지막으로 CoDisconnectObject를 호출하여 모든 원격 클라이언트를 강제로 차단합니다.
개체 애플리케이션이 로컬 서버(DLL이 아닌 EXE)인 경우 개체를 닫으면 다른 실행 중인 개체를 지원하거나 실행 중인 상태를 유지할 다른 이유가 없는 한 개체 애플리케이션도 종료해야 합니다. 이러한 이유로는 IClassFactory::LockServer 잠금의 존재, 애플리케이션의 최종 사용자 제어 또는 애플리케이션에 대한 액세스가 필요한 다른 열린 문서의 존재가 포함될 수 있습니다.

연결된 개체 에서 IOleObject::Close 를 호출하면 원본 애플리케이션에서 연결이 끊어지지만 종료되지는 않습니다. 개체가 닫혀 있을 때 사용자에게 표시되는 원본 애플리케이션은 연결이 끊긴 후에도 계속 표시되고 실행되고 IAdviseSink::OnClose 알림을 링크 컨테이너에 보내지 않습니다.

요구 사항

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

추가 정보

CoDisconnectObject

IAdviseSink::OnClose

IClassFactory::LockServer

IDataObject::D Advise

IOleClientSite::OnShowWindow

IOleClientSite::SaveObject

IOleObject

OLECLOSE

OleFlushClipboard