객체 연결 삽입
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
객체 연결 삽입(OLE)은 마이크로소프트 윈도우 운영 체제에서 다른 응용 프로그램의 데이터를 문서에 삽입하거나 연결하는 기술이다. 1990년 OLE 1.0 출시 이후 COM, DCOM, OCX(ActiveX 컨트롤) 등으로 발전했다. OLE는 객체 간 데이터 전송 및 캐싱, 문서 및 보기, 창 관리, 연결 기능을 위한 다양한 인터페이스를 제공하며, IDataObject, IOleObject, IOleWindow 등이 주요 인터페이스이다. OLE는 오픈도크와 경쟁했으나, 윈도우와의 호환성을 이유로 널리 사용되지 못했다. OLE 객체는 윈도우 환경 외에서는 상호 운용성이 제한적이다.
더 읽어볼만한 페이지
- 마이크로소프트 API - 윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다. - 마이크로소프트 API - WinFS
WinFS는 마이크로소프트가 개발한 파일 시스템으로, 검색 기능 내장 및 메타데이터 관리를 통해 데이터 관리 효율성을 높이는 것을 목표로 했으나 별도 제품으로 출시되지는 못하고 핵심 기능들이 윈도우 비스타 이후 기술에 통합되었다.
객체 연결 삽입 | |
---|---|
개요 | |
이름 | 객체 연결 삽입 (Object Linking and Embedding, OLE) |
종류 | 기술 |
개발 | 마이크로소프트 |
상태 | 더 이상 사용되지 않음 |
설명 | 마이크로소프트에서 개발한 독점 기술로, 사용자가 다른 애플리케이션에서 만든 콘텐츠를 문서를 변경하지 않고 편집할 수 있게 함. |
기술적 세부 사항 | |
핵심 기능 | 다른 애플리케이션의 데이터를 문서에 삽입하거나 연결하는 기능 제공 |
데이터 저장 방식 | 삽입된 객체: 원본 애플리케이션의 데이터가 문서에 포함됨 연결된 객체: 원본 애플리케이션의 데이터에 대한 링크만 문서에 포함됨 |
장점 | 문서 내에서 다른 애플리케이션의 데이터 직접 편집 가능 연결된 객체의 경우, 원본 데이터 변경 시 문서 내용도 자동으로 업데이트 |
단점 | 호환성 문제: OLE를 지원하지 않는 애플리케이션에서는 정상적으로 작동하지 않을 수 있음 보안 문제: 악성 객체가 삽입될 경우 시스템에 위험을 초래할 수 있음 |
역사 | |
개발 시기 | 1990년대 초 |
초기 목적 | 윈도우 환경에서 애플리케이션 간 데이터 공유 및 상호 운용성 향상 |
발전 과정 | OLE 1.0: 초기 버전, 제한적인 기능 제공 OLE 2.0: 기능 개선 및 확장, COM (Component Object Model) 기반으로 변경 ActiveX: OLE 기술을 기반으로 웹 환경에서 사용하기 위해 개발 |
현재 | 더 이상 활발하게 개발되지 않음 최신 기술로 대체되는 추세 |
활용 분야 | |
문서 작성 | 워드 프로세서에서 스프레드시트 데이터나 그래프 삽입 |
프레젠테이션 | 프레젠테이션 소프트웨어에서 이미지나 동영상 삽입 |
기타 | 다양한 애플리케이션에서 데이터 공유 및 통합에 활용 |
관련 기술 | |
COM (Component Object Model) | OLE의 기반 기술 |
ActiveX | OLE를 기반으로 웹 환경에서 사용하기 위해 개발된 기술 |
OLE Automation | 애플리케이션 간 자동화된 상호 작용을 지원하는 기술 |
2. 역사
OLE는 1990년 마이크로소프트 윈도우 운영 체제를 위해 개발된 동적 데이터 교환(DDE)의 발전된 형태이다.[1] DDE는 실행 중인 두 응용 프로그램 간에 전송할 수 있는 데이터 양에 제한이 있었지만, OLE는 두 문서 간의 링크를 관리하고 다른 문서에 특정 형식의 문서를 삽입할 수 있게 했다.
OLE는 문서의 일부를 다른 응용 프로그램으로 내보낸 다음 추가 콘텐츠와 함께 가져올 수 있게 해준다. 예를 들어, 데스크톱 출판 시스템은 OLE를 사용하여 일부 텍스트를 워드 프로세서로 보내거나 그림을 비트맵 편집기로 보낼 수 있다.[1] OLE의 주요 이점은 텍스트 편집기 및 이미지 편집기와 같이 서로 다른 응용 프로그램에서 문서에 다양한 종류의 데이터를 추가할 수 있다는 것이다.
OLE는 문서의 일부를 다른 소프트웨어로 편집하고, 그것을 원래 문서에 삽입하는 것도 가능하게 한다. 예를 들어, DTP에서는 텍스트를 워드 프로세서, 그림을 페인트 툴이나 드로우 툴로 편집하는 식이다. 또한, 다른 데이터에 대한 참조를 문서에 포함시킬 수 있으며, 그 경우 참조 대상 데이터가 변경되면, 참조가 포함된 문서에도 즉시 그 변경 사항이 반영된다.
OLE의 초기 용도는 '''복합 문서'''의 관리를 위해서였지만, 드래그 앤 드롭이나 클립보드를 이용한 응용 소프트웨어 간의 데이터 전송에도 사용되고 있다. 또한, OLE에 의한 자동화는 JScript나 VBScript를 경유하여, 애플리케이션의 동작을 자동화하는 스크립팅에도 사용되고 있다.
2. 1. OLE 1.0 (1990년)
OLE 1.0은 1990년에 출시되었으며 마이크로소프트가 초기 버전의 윈도우 운영 체제들용으로 만든 원래의 동적 데이터 교환(DDE)의 혁신이었다.[1] DDE는 실행 중인 두 개의 응용 프로그램들 사이에 전송할 수 있는 데이터 양에 제한이 있었지만, OLE는 두 개의 문서 사이에 사용 중인 링크를 관리할 수 있게 하고 다른 문서에 특정한 종류의 문서를 삽입할 수도 있었다. OLE는 편집 응용 프로그램이 문서의 일부를 다른 응용 프로그램으로 내보낸 다음 추가 콘텐츠와 함께 가져올 수 있게 해준다. 예를 들어, 데스크톱 출판 시스템은 OLE를 사용하여 일부 텍스트를 워드 프로세서로 보내거나 그림을 비트맵 편집기로 보낼 수 있다. OLE의 주요 이점은 텍스트 편집기 및 이미지 편집기와 같이 서로 다른 응용 프로그램에서 문서에 다양한 종류의 데이터를 추가할 수 있다는 것이다. 이렇게 하면 복합 파일 바이너리 형식 문서와 해당 문서가 참조하는 마스터 파일이 생성된다. 마스터 파일의 데이터 변경 사항은 이를 참조하는 문서에 즉시 영향을 미치는데, 이것을 "삽입" 대신 "연결"이라고 한다.OLE는 드래그 앤 드롭 또는 클립보드 작업을 사용하여 서로 다른 응용 프로그램 간에 데이터를 전송하는 데에도 사용할 수 있다.
OLE 서버와 클라이언트는 가상 함수 테이블(VTBL)을 사용하여 시스템 라이브러리와 통신한다. VTBL은 시스템 라이브러리가 서버 또는 클라이언트와 통신하는 데 사용할 수 있는 함수 포인터 구조로 구성된다. 서버 및 클라이언트 라이브러리인 OLESVR.DLL과 OLECLI.DLL은 원래 WM_DDE_EXECUTE 메시지를 사용하여 서로 통신하도록 설계되었다.
OLE 1.0은 이후 소프트웨어 컴포넌트를 위한 아키텍처로 발전하여 구성 요소 개체 모델(COM)로 알려졌으며, 이후 DCOM으로 발전했다.
OLE 개체가 클립보드에 배치되거나 문서에 삽입될 때, 원시 윈도우 형식(예: 비트맵 또는 메타파일)의 시각적 표현과 기본 데이터가 자체 형식으로 함께 저장된다. 이를 통해 응용 프로그램은 개체를 만든 응용 프로그램을 로드하지 않고도 개체를 표시할 수 있으며, 적절한 응용 프로그램이 설치된 경우 개체를 편집할 수도 있다.
OLE의 구성 요소인 '''Object Packager'''는 윈도우 3.1부터 윈도우 XP까지 제공되어 OLE가 아닌 개체를 "패키징"하여 OLE 클라이언트에 삽입할 수 있도록 한다.
2. 2. OLE 2.0
OLE 2.0은 OLE 1.0의 뒤를 이으며 같은 목표를 어느 정도 공유하고 있지만 VTBL을 직접 이용하지 않고 COM 위에 다시 구현되었다.[1] 자동화, 드래그 앤드 드롭 등의 기능들이 새로 추가되었다.[1]새로운 기능으로는 OLE 자동화, 끌어 놓기, 제자리 활성화 및 구조적 저장소가 있었다.[1] 모니커는 OLE 1 객체 이름에서 발전하여, 독립적으로 개발된 URL 또는 URI와 유사한 계층적 객체 및 리소스 명명 시스템을 제공했다.[1] 현재 Windows는 URL 모니커 유형과 모니커 URL 스키마를 지원하여 두 기술을 병합했다.[1]
OLE 1.0의 개선판으로 등장한 OLE 2.0은 그 목표는 OLE 1.0과 큰 차이가 없지만, 구현 측면에서는 원시 VTBL이 아닌 COM을 사용하여 다시 구현되었다는 큰 차이점이 있다. 또한, OLE 오토메이션, 드래그 앤 드롭, 인플레이스 활성화 등의 새로운 기능이 추가되었다.[1]
2. 3. OLE 사용자 지정 컨트롤 (OCX)
1994년에, 지금은 쓰이지 않는 비주얼 베이직 확장 컨트롤을 대체하기 위해 도입되었다. 이것은 새로운 아키텍처로 OLE에 기반을 두고 있었다. 특히 OLE 2.0을 지원하는 어떠한 컨테이너라도 OLE 사용자 지정 컨트롤을 삽입할 수 있었지만, 컨테이너가 이를 지원하지 않으면 이벤트에 반응하지 못했다. OLE 사용자 지정 컨트롤은 일반적으로 .ocx 확장자의 동적 링크 라이브러리 형태로 배포되었다. 1996년에 IUnknown을 제외한 모든 인터페이스를 선택 가능하게 함으로써 컨트롤의 파일 크기를 줄여 다운로드 속도를 빠르게 할 수 있었다. 이것은 나중에 ActiveX 컨트롤로 불리게 되었다.3. 기술적 세부 사항
OLE 객체와 컨테이너는 COM을 기반으로 구현되며, 기능을 내보내기 위해 인터페이스를 구현할 수 있는 객체이다. '''IOleObject''' 인터페이스는 필수적이지만, 해당 인터페이스에서 내보내는 기능이 필요한 경우 다른 인터페이스도 구현해야 할 수 있다.[1]
OLE 객체가 클립보드에 배치되거나 문서에 삽입될 때, 비트맵 또는 메타파일 형식의 시각적 표현과 기본 데이터가 자체 형식으로 함께 저장된다. 이를 통해 응용 프로그램은 개체를 만든 응용 프로그램을 로드하지 않고도 개체를 표시할 수 있으며, 적절한 응용 프로그램이 설치된 경우 개체를 편집할 수도 있다.
3. 1. OLE 객체
OLE 객체와 컨테이너는 구성 요소 개체 모델을 기반으로 구현되며, 기능을 내보내기 위해 인터페이스를 구현할 수 있는 개체이다. '''IOleObject''' 인터페이스만 필수 사항이지만, 해당 인터페이스에서 내보내는 기능이 필요한 경우 다른 인터페이스도 구현해야 할 수 있다.[1]일반적으로 OLE 객체에서 구현되는 인터페이스는 OLE 컨테이너에서 호출된다.[1]
OLE의 주요 기능을 이해하기 위해 필요한 몇 가지 용어는 다음과 같다.
- 개체의 보기 상태: 개체가 투명한지, 불투명한지, 아니면 단색 배경의 불투명 상태인지, 그리고 지정된 모양으로 그리기를 지원하는지 여부이다.
- 개체의 사이트: 컨테이너 내에서 개체의 위치를 나타내는 개체이다. 컨테이너는 포함된 모든 개체에 대해 사이트 개체를 지원한다.
OLE는 다음과 같은 주요 기능을 지원한다.
- 데이터 전송 및 알림
- 캐싱
- 문서 및 보기
- 창 및 활성화
- 연결
OLE 개체가 클립보드에 배치되거나 문서에 삽입될 때, 비트맵 또는 메타파일 형식의 시각적 표현과 기본 데이터가 자체 형식으로 함께 저장된다. 이를 통해 응용 프로그램은 개체를 만든 응용 프로그램을 로드하지 않고도 개체를 표시할 수 있으며, 적절한 응용 프로그램이 설치된 경우 개체를 편집할 수도 있다.
3. 1. 1. 데이터 전송 및 알림
OLE를 사용하면 데이터 전송 및 데이터 변경 알림을 할 수 있다. 드래그 앤 드롭, 클립보드 작업, 포함된 문서에 링크되거나 포함될 객체에서 '''DataObject''' 인터페이스를 구현해야 한다.[10] '''ObjectWithSite''' 인터페이스는 호출자가 OLE 객체에 해당 사이트를 알릴 수 있게 한다. '''OleObject'''가 다른 용도로 사용되지 않는 경우 '''ObjectWithSite'''를 사용할 수 있다.[10]3. 1. 2. 캐싱
'''OleCache'''는 DataObject에서 시각적 표현을 캐시할 수 있도록 한다. 이를 통해 포함된 객체는 시각적 표현을 저장할 수 있으며, 객체를 생성하는 데 사용된 응용 프로그램을 시작하지 않고도 나중에 표시할 수 있다.[1]'''OleCache2'''는 캐시에 대한 보다 세분화된 제어를 제공한다.[1]
'''OleCacheControl'''은 컨테이너에서 호출되지 않지만, 객체 내에서 해당 '''DataObject'''가 실행 중일 때 알림을 받도록 하여 해당 객체의 데이터 변경 알림을 구독하고 캐시된 표현을 제대로 업데이트할 수 있도록 한다.[1]
3. 1. 3. 문서 및 보기
'''OleDocument'''는 OLE 객체가 데이터의 여러 보기를 지원하고 몇 가지 관련 기능을 지원할 수 있도록 한다.[1] '''OleDocumentView'''는 문서 객체 ('''OleDocument'''를 구현하는 객체)가 모든 보기에 대해 구현하는 인터페이스이다.[1] 이를 통해 호출자는 객체의 사이트를 설정하고, 객체의 크기를 쿼리 및 설정하며, 객체를 표시하고 활성화할 수 있으며, 몇 가지 관련 기능도 제공한다.[1]3. 1. 4. 창 및 활성화
OleWindow영어는 OLE 개체와 컨테이너가 구성 요소 개체 모델을 기반으로 구현되며, 기능을 내보내기 위해 인터페이스를 구현할 수 있는 개체이다. '''IOleObject''' 인터페이스만 필수 사항이지만, 해당 인터페이스에서 내보내는 기능이 필요한 경우 다른 인터페이스도 구현해야 할 수 있다.[1]다음은 일반적으로 인터페이스를 구현해야 하는 개체별로 그룹화된 인터페이스 목록이다. 일반적으로 OLE 개체에서 구현되는 인터페이스는 일반적으로 OLE 컨테이너에서 호출되고 그 반대의 경우도 마찬가지이다. 다음 목록에서 들여쓰기는 인터페이스 상속을 나타낸다. 들여쓰기되지 않은 모든 인터페이스는 '''IUnknown'''에서 파생된다.[1]
- '''OleWindow'''[1]
- '''OleInPlaceActiveObject''': 객체의 가장 바깥쪽 컨테이너에서 호출되어 활성 상태인 동안 객체와 상호 작용한다. 예를 들어, 포함된 객체를 위한 컨테이너의 메시지 큐에서 액셀러레이터 키를 처리한다.[1]
- '''OleInPlaceObject''': 컨테이너에서 객체를 활성화하거나 비활성화하기 위해 호출된다.[1]
- '''IOleInPlaceObjectWindowless''': 창이 없는 객체는 자체 창이 없는 객체이지만 대신 컨테이너의 창에 표시된다. 이는 컨테이너의 창에서 수신된, 포함된 객체를 위한 메시지를 릴레이하기 위해 컨테이너에서 사용된다. 예를 들어, 마우스가 창 위로 이동하면 Windows는 마우스 좌표와 함께 마우스 이동 메시지를 창의 메시지 큐에 배치한다. 이 창에 창이 없는 포함된 객체가 있는 경우, 마우스 포인터의 좌표가 이 객체 위에 있으면 메시지가 해당 객체로 릴레이되어야 할 수 있다. 비슷한 이유로 이 인터페이스는 객체의 '''DropTarget''' 인터페이스에 대한 액세스도 제공한다.[1]
3. 1. 5. 연결
OLE Link영어는 객체가 연결을 지원할 수 있도록 한다. 예를 들어, 컨테이너가 연결된 객체의 소스를 설정할 수 있도록 한다.[1] ''일반적으로 기본 구현이 사용된다.''[1]3. 1. 6. 기타
OLE 객체와 컨테이너는 구성 요소 개체 모델을 기반으로 구현되며, 기능을 내보내기 위해 인터페이스를 구현할 수 있는 개체이다. '''IOleObject''' 인터페이스만 필수 사항이지만, 해당 인터페이스에서 내보내는 기능이 필요한 경우 다른 인터페이스도 구현해야 할 수 있다.일반적으로 OLE 객체에서 구현되는 인터페이스는 OLE 컨테이너에서 호출되고, 반대로 OLE 컨테이너에서 구현되는 인터페이스는 OLE 객체에서 호출된다. 다음은 인터페이스를 구현해야 하는 개체별로 그룹화한 목록이다. 아래 목록에서 들여쓰기는 인터페이스 상속을 나타낸다. 들여쓰기되지 않은 모든 인터페이스는 '''IUnknown'''에서 파생된다.
- '''OleObject'''[10]: OLE 객체의 가장 중요한 인터페이스이다. 컨테이너는 이 인터페이스를 통해 객체에 사이트를 알리고, 데이터를 초기화하고, 객체를 열고 닫고, 크기를 쿼리 및 설정하고, 컨테이너의 '''AdviseSink'''에 알림을 요청하고, 객체에 "동사"(예: "열기", "편집")를 실행하도록 할 수 있다. 사용자가 객체를 두 번 클릭하면 실행되는 주요 동사도 정의할 수 있다.
- '''ViewObject'''[10]: 객체가 '''DataObject'''를 컨테이너에 전달하지 않고 직접 자신을 그릴 수 있게 한다. '''DataObject'''와 이 인터페이스를 모두 지원하는 객체의 경우, 일반적으로 기본 구현을 공유한다.
3. 2. OLE 컨테이너
OLE 개체와 컨테이너는 구성 요소 개체 모델을 기반으로 구현되며, 기능을 내보내기 위해 인터페이스를 구현할 수 있는 개체이다. '''IOleObject''' 인터페이스만 필수 사항이지만, 해당 인터페이스에서 내보내는 기능이 필요한 경우 다른 인터페이스도 구현해야 할 수 있다.개체의 보기 상태는 개체가 투명한지, 불투명한지, 아니면 단색 배경의 불투명 상태인지, 그리고 지정된 모양으로 그리기를 지원하는지 여부이다. 개체의 사이트는 컨테이너 내에서 개체의 위치를 나타내는 개체이다. 컨테이너는 포함된 모든 개체에 대해 사이트 개체를 지원한다.
일반적으로 OLE 개체에서 구현되는 인터페이스는 OLE 컨테이너에서 호출되고 그 반대의 경우도 마찬가지이다. 인터페이스 상속은 아래 표에서 들여쓰기로 표현한다. 들여쓰기되지 않은 모든 인터페이스는 '''IUnknown'''에서 파생된다.
인터페이스 | 설명 |
---|---|
IOleWindow | |
IOleInPlaceUIWindow | 포함된 개체가 컨테이너의 창에서 도구 모음에 대한 공간을 협상할 수 있도록 한다. |
IOleInPlaceFrame | 호출자가 컨테이너에게 협력 메뉴가 될 빈 메뉴에 메뉴 항목을 삽입하도록 요청할 수 있다. 또한 호출자가 컨테이너에게 이 메뉴를 표시하거나 숨기도록, 대화 상자를 표시하거나 숨기도록, 포함된 개체가 컨테이너를 위해 의도한 바로 가기 키를 처리하도록 요청할 수 있다. |
IOleInPlaceSite | 컨테이너가 이 인터페이스를 구현하는 경우, 포함된 개체를 제자리에서 활성화할 수 있다. 즉, 별도의 창에서 열지 않고 활성화할 수 있다. 컨테이너의 IOleInPlaceUIWindow에 대한 액세스를 제공한다. |
IOleInPlaceSiteEx | 컨테이너가 이 인터페이스를 구현하는 경우, 포함된 개체가 활성화 또는 비활성화 시 다시 그릴 필요가 있는지 확인할 수 있다. 또한 UI를 활성화하도록 요청할 수도 있다. |
IOleInPlaceSiteWindowless | 컨테이너가 창이 없는 포함된 개체를 지원하려는 경우, 포함된 개체의 창에서 일반적으로 제공되는 기능을 대체하기 위해 포함된 개체에 기능을 제공해야 한다. 예를 들어 이 인터페이스는 컨테이너의 창의 장치 컨텍스트에 액세스하는 방법을 제공하여 포함된 개체가 컨테이너의 창에 그릴 수 있도록 한다. |
IOleUIObjInfo | "개체 속성" 대화 상자에 필요한 메서드를 포함한다. 예를 들어 사용자가 "개체 속성" 대화 상자를 열고 개체를 다른 유형으로 변환하도록 요청하면 이 인터페이스의 메서드가 호출된다. |
3. 2. 1. 알림
'''IAdviseSink'''는 객체가 저장, 닫힘, 이름 변경되거나 데이터 또는 시각적 표현이 변경될 때 알림을 받도록 해준다.3. 2. 2. 사이트 및 정보
'''IOleClientSite'''는 호출자가 객체의 컨테이너 및 위치에 대한 정보를 얻고, 객체를 저장, 크기 조정, 표시, 숨김 등을 요청할 수 있게 해주는 인터페이스이다.'''IOleDocumentSite'''는 호출자가 이 사이트의 객체를 즉시 활성화하도록 요청할 수 있게 해주는 인터페이스이다. 이 인터페이스를 구현하려면 '''IOleClientSite''', '''IOleInPlaceSite''', '''IAdviseSink'''도 구현해야 한다.
3. 2. 3. 컨테이너 기능
'''IOleContainer''' 인터페이스는 컨테이너에 포함된 객체들을 열거하거나, 이름으로 특정 객체를 찾을 수 있도록 하는 기능을 제공한다. 이 기능은 주로 컨테이너가 포함된 객체에 대한 링크를 지원할 때 유용하게 사용된다.3. 2. 4. 링크 관리
'''IOleUILinkContainer'''는 연결된 객체를 관리하는 표준 OLE 대화 상자에서 사용되는 메서드를 포함한다. "링크", "소스 변경", "링크 업데이트" 및 "개체 속성" 대화 상자에서 사용된다.[1]3. 2. 5. 실행 취소 관리
'''IOleUndoManager'''는 컨테이너와 포함된 객체에 중앙 집중식 실행 취소 서비스를 제공한다. 실행 취소 가능한 작업이 수행되면 '''IOleUndoUnit'''이 생성되어 '''IOleUndoManager'''에 추가된다.3. 3. 기타 인터페이스
;IDataAdviseHolder: 데이터 변경 알림과 관련된 '''IDataObject''' 인터페이스의 메서드는 이 인터페이스의 메서드를 호출하여 구현할 수 있다. ''일반적으로 기본 구현이 사용된다.''
;IOleAdviseHolder
: 알림과 관련된 '''IOleObject''' 인터페이스의 메서드는 이 인터페이스의 메서드를 호출하여 구현할 수 있다. ''일반적으로 기본 구현이 사용된다.''
;IDropSource
: 끌어다 놓기 작업의 소스가 될 수 있는, 즉 드래그 가능한 객체에 의해 구현된다. 구현 시 드래그 앤 드롭 효과를 그릴 수 있으며, 객체가 드롭되거나 드래그 앤 드롭 작업이 취소될 때를 지정할 수 있다.
;IDropTarget
: 드롭된 객체를 수락하는, 즉 드래그 앤 드롭 작업의 대상이 될 수 있는 객체에 의해 구현된다. 구현 시 대상은 드롭된 객체의 수락 여부와 객체가 드롭된 후의 동작을 지정할 수 있다.
;IOleCommandTarget
: 특정 표준 명령을 지원하려는 객체(OLE 객체, OLE 컨테이너 및 기타 객체)에서 구현할 수 있다. 호출자는 명령 지원 여부를 쿼리하고 명령을 실행할 수 있다. 객체가 일반적으로 구현하려는 명령에는 "삭제", "잘라내기", "복사", "붙여넣기", "실행 취소", "찾기", "인쇄", "저장", "확대/축소" 등이 포함될 수 있다. 현재 58개의 표준 명령이 정의되어 있으며, 여기에는 오피스 소프트웨어, 웹 브라우저 및 유사한 응용 프로그램에서 일반적으로 사용되는 명령이 포함된다.
;IOleWindow
: 이 인터페이스는 컨테이너 또는 포함된 객체의 창을 나타낸다. 호출자는 창의 핸들을 얻고 상황에 맞는 도움말 기능을 토글할 수 있다. 상황에 맞는 도움말 기능이 켜져 있으면 일반적으로 마우스 포인터가 물음표가 있는 화살표로 변경되어 사용자 인터페이스 요소를 클릭하면 도움말 창이 열린다는 것을 나타낸다.
4. 경쟁 기술: 오픈도크(OpenDoc)
오픈도크는 OLE와 경쟁하기 위한 기술이었다. 마이크로소프트의 일부 경쟁사들은 오픈도크가 더 강력하고 사용하기 쉽다고 생각했다. 오픈도크는 사용자가 마이크로소프트의 독점적인 OLE 표준과 직접 경쟁하면서 여러 응용 프로그램에서 정보를 보고 편집할 수 있도록 했다. 1993년, 일부 마이크로소프트 경쟁사들은 크로스 플랫폼 연결 및 임베딩을 위한 오픈 표준으로 오픈도크를 개발하기 위해 Component Integration Laboratories("CIL")라는 컨소시엄을 설립했다.
마이크로소프트는 OLE 호환성을 윈도우 95와의 응용 프로그램 호환성에 대한 인증 조건으로 요구했다. 마이크로소프트는 처음에 오픈도크를 사용하는 응용 프로그램은 OLE와 호환되는 것으로 간주되어 윈도우 95에 대한 인증을 받을 것이라고 발표했다가 나중에 이 결정을 번복하고 오픈도크를 사용하는 응용 프로그램은 전혀 인증을 받지 못할 수도 있다고 말했다. 마이크로소프트는 경쟁 응용 프로그램을 출시하기 전까지 OLE의 사양과 디버깅된 버전을 공개하지 않았다.
5. 상호 운용성
OLE 객체의 사용은 상호 운용성을 제한하는데, 이는 마이크로소프트 윈도우 외의 파일 보기 또는 편집 프로그램에서 널리 지원되지 않기 때문이다. 예를 들어, 텍스트 문서나 프레젠테이션 파일에 스프레드시트 응용 프로그램의 표나 차트와 같은 다른 파일을 삽입하는 경우가 있다.[2][3][4][5] OLE 객체를 이해하는 소프트웨어가 없는 경우, 해당 객체는 그림 (객체의 비트맵 표현)으로 대체되거나 표시되지 않는다.[6][7][8]
참조
[1]
FOLDOC
Object Linking and Embedding
[2]
웹사이트
FOSS word processors compared: OOo Writer, AbiWord, and KWord
https://www.linux.co[...]
The Linux Foundation
2005-08-23
[3]
웹사이트
Sharing files between OpenOffice.org and Microsoft Office
https://www.linux.co[...]
The Linux Foundation
2005-07-28
[4]
웹사이트
SoftMaker Office 2008 focuses on compatibility with Microsoft Office
https://www.linux.co[...]
The Linux Foundation
2008-11-20
[5]
간행물
OpenOffice / OpenDocument and Microsoft Office 2007 / Open XML security
http://pacsec.jp/psj[...]
2006-11-30
[6]
뉴스
RE: OLE object - bitmap representation?
https://groups.googl[...]
2005-09-05
[7]
웹사이트
A Rich Edit Control That Displays Bitmaps and Other OLE Objects
http://www.codeproje[...]
2005-02-09
[8]
웹사이트
ACC: Why OLE Objects Cause Databases to Grow
http://support.micro[...]
2007-01-19
[9]
문서
IOleObject interface (COM)
https://msdn.microso[...]
[10]
문서
Adobe Scripting Center | Adobe Developer Connection [ADC]
http://www.adobe.com[...]
[11]
문서
'object linking and embedding' - 네이트 영어사전
http://engdic.nate.c[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com