항목 모니커

또 다른 OLE 구현 모니커 클래스는 다른 개체에 포함된 개체를 식별하는 데 사용할 수 있는 항목 모니커입니다. 포함된 개체의 한 가지 유형은 복합 문서에 포함된 OLE 개체입니다. 복합 문서는 각각 "embedobj1", "embedobj2" 등과 같은 임의의 이름을 할당하여 포함된 개체를 식별할 수 있습니다. 포함된 개체의 또 다른 유형은 스프레드시트의 셀 범위 또는 텍스트 문서의 문자 범위와 같은 문서의 사용자 선택입니다. 선택 영역으로 구성된 개체를 의사 개체 라고 하는 이유는 사용자가 선택 영역을 표시할 때까지 고유 개체로 처리되지 않기 때문입니다. 스프레드시트는 "1A:7F"와 같은 이름을 사용하여 셀 범위를 식별할 수 있지만, 워드 프로세싱 문서는 책갈피의 이름을 사용하여 문자 범위를 식별할 수 있습니다.

항목 모니커는 컨테이너를 식별하는 다른 모니커와 연결되거나 구성될 때 주로 유용합니다. 항목 모니커는 일반적으로 만든 다음 파일 모니커(예: )에 구성되어 개체에 대한 전체 경로에 해당하는 항목을 만듭니다. 예를 들어 항목 모니커 "embedobj1"(컨테이너 내의 개체를 식별하는)을 사용하여 파일 모니커 "c:\work\report.doc"(컨테이너 개체를 식별함)를 작성하여 특정 파일 내의 특정 개체를 고유하게 식별하는 모니커 "c:\work\report.doc\embedobj1"을 구성할 수 있습니다. 추가 항목 모니커를 연결하여 깊이 중첩된 개체를 식별할 수도 있습니다. 예를 들어 "embedobj1"이 스프레드시트 개체의 이름인 경우 해당 스프레드시트 개체에서 특정 범위의 셀을 식별하려면 다른 항목 모니커를 추가하여 "c:\work\report.doc\embedobj1\1A:7F"에 해당하는 모니커를 만들 수 있습니다.

파일 모니커와 결합하면 항목 모니커가 전체 경로를 형성합니다. 따라서 항목 모니커가 파일 시스템 이외의 경로 이름 개념을 확장하여 파일뿐만 아니라 개별 개체를 식별하는 경로 이름을 정의합니다.

항목 모니커와 파일 모니커 사이에는 상당한 차이가 있습니다. 파일 모니커에 포함된 경로는 파일 시스템을 이해하는 모든 사용자에게 의미가 있지만 항목 모니커에 포함된 부분 경로는 특정 컨테이너에만 의미가 있습니다. 모든 사람은 "c:\work\report.doc"이 무엇을 참조하는지 알고 있지만 특정 컨테이너 개체 중 하나만 "1A:7F"가 무엇을 참조하는지 알고 있습니다. 한 컨테이너는 다른 애플리케이션에서 만든 항목 모니커를 해석할 수 없습니다. 항목 모니커가 참조하는 개체를 아는 유일한 컨테이너는 처음에 개체에 항목 모니커를 할당한 컨테이너입니다. 이러한 이유로 파일과 항목 모니커의 조합으로 명명된 개체의 원본은 파일 모니커를 쉽게 바인딩할 수 있도록 IPersistFile을 구현할 뿐만 아니라 파일 컨텍스트에서 항목 모니커의 이름을 적절한 개체로 쉽게 확인할 수 있도록 IOleItemContainer 를 구현해야 합니다.

모니커의 장점은 모니커를 사용하여 개체를 찾는 사람이 항목 모니커가 복합 항목의 일부인 한 항목 모니커에 포함된 이름을 이해할 필요가 없다는 것입니다. 일반적으로 항목 모니커가 자체적으로 존재하는 것은 의미가 없습니다. 대신 파일 모니커에 항목 모니커를 작성합니다. 그런 다음, 복합에서 IMoniker::BindToObject 를 호출하여 그 안에 있는 개별 모니커를 바인딩하고 이름을 해석합니다.

항목 모니커 개체를 만들고 모니커 공급자에 대한 포인터를 반환하기 위해 OLE는 도우미 함수 CreateItemMoniker를 제공합니다. 이 함수는 항목 모니커 개체를 만들고 공급자에 대한 포인터를 반환합니다.

안티 모니커

클래스 모니커

복합 모니커

파일 모니커

포인터 모니커