CConnectionPoint

CConnectionPoint 클래스 정의 특수 한 유형의 "연결 지점입니다." 라는 다른 OLE 개체와 통신 하는 데 사용 하는 인터페이스 연결 지점 이벤트를 발사 하는 등의 다른 개체에 대 한 작업을 시작 하 고 변경 알림 수 있는 보내는 인터페이스를 구현 하는 일반 OLE 인터페이스를 구현 하 고 OLE 컨트롤의 기능을 사용 하는 달리。

연결의 두 부분으로 구성 됩니다: "소스" 및 인터페이스를 구현 하는 개체를 호출 하는 인터페이스를 호출 하는 개체 라는 "싱크"를 선택 합니다. 연결 지점을 노출 함으로써 소스 자체에 대 한 연결을 설정 하는 싱크를 수 있습니다. 연결 지점 메커니즘을 통해 원본 개체 멤버 함수 집합의 싱크의 구현에 대 한 포인터를 가져옵니다. 소스 이벤트 싱크에 의해 구현 된 화재는 싱크 구현의 적절 한 메서드를 호출할 수 예를 들어,。

기본적으로 COleControl-두 개의 연결 지점을 구현 하는 파생된 클래스: 이벤트 및 속성 변경 알림. 이러한 연결은 사용, 각각 때 싱크 (예를 들어, 컨트롤의 컨테이너)를 알리는 및 이벤트 발생에 대 한 속성 값 변경 되었습니다. 추가 연결 지점을 구현 하려면 OLE 컨트롤에 대 한 지원이 제공 됩니다. 컨트롤 클래스에서 구현 된 각 추가 연결 지점에 대 한 연결 지점을 구현 하는 "연결 부분"를 선언 해야 합니다. 하나 이상의 연결 지점을 구현 하는 경우 당신은 또한 단일 컨트롤 클래스에서 "연결 지도"를 선언할 필요가。

다음 예제에서는 단순한 연결 맵과 대 한 연결 지점을 Sample 코드의 두 부분으로 구성 된 OLE 컨트롤: 연결 맵과 포인트를 선언 하는 첫 번째 부분,이 지도 포인트를 구현 하는 두 번째. 첫 번째 조각 보호 구역의 컨트롤 클래스의 선언에 삽입

 nbsp;???/ / ISample 인터페이스에 대 한 연결 지점
 ?? BEGIN_CONNECTION_PART (CSampleCtrl, SampleConnPt)
 ?????? CONNECTION_IID(IID_ISampleSink)
 ?? END_CONNECTION_PART(SampleConnPt)

DECLARE_CONNECTION_MAP()(&N)

포함된 하는 클래스를 선언 하는 BEGIN_CONNECTION_PARTEND_CONNECTION_PART 매크로 XSampleConnPt 는이 특정 연결 지점 구현 ( CConnectionPoint에서 파생 됨). 모든 CConnectionPoint 멤버 함수를 재정의 하거나 자신만의 멤버 함수를 추가 하려는 경우에 이러한 두 매크로 사이 선언 합니다. CONNECTION_IID 매크로 이러한 두 매크로 사이 배치 하는 경우 CConnectionPoint::GetIID 멤버 함수를 재정의 하는 예를 들어,。

구현 파일에 두 번째 코드 조각 삽입 (.CPP) 컨트롤 클래스의. 이 코드는 추가 연결 지점을 포함 하는 연결 지도 구현SampleConnPt:

BEGIN_CONNECTION_MAP (CSampleCtrl, COleControl)
 nbsp;? CONNECTION_PART (CSampleCtrl, IID_ISampleSink, SampleConnPt)
END_CONNECTION_MAP()(&N)

이 코드 조각이 삽입 되 면 샘플 OLE 컨트롤 ISampleSink 인터페이스에 대 한 연결 지점을 노출합니다。

일반적으로, 연결 지점을 지원 "캐스팅"; 여러 싱크를 방송 하는 기능 같은 인터페이스에 연결 합니다. 다음 코드 조각에서는 연결 지점에서 각 싱크를 반복 하 여 멀티 캐스팅을 수행 하는 방법을 보여 줍니다.:

void CSampleCtrl::CallSinkFunc()
{
 nbsp;? const CPtrArray * pConnections = m_xSampleConnPt.GetConnections();
 ?? ASSERT (pConnections! = NULL);

int cConnections = pConnections-> GetSize();
 ?? ISampleSink * pSampleSink;
 ?? 에 대 한 (int I = 0; 난 < cConnections; i + +)
 ?? {
 ?????? pSampleSink = (ISampleSink *) (pConnections-> GetAt(i));
 ?????? ASSERT (pSampleSink! = NULL);
 ?????? pSampleSink-> SinkFunc();
 ?? }
}

에 연결 현재 집합을 검색 하는이 예제에서 SampleConnPt 를 호출 하 여 연결 지점 CConnectionPoint::GetConnections . 다음 반복 연결 및 호출 ISampleSink::SinkFunc 모든 활성 연결에。

CConnectionPoint사용에 자세한 내용은 다음 웹 사이트를 참조 하십시오. 문서 Visual c + + 프로그래머 가이드연결점

# include lt;afxctl.h>

클래스 멤버 |nbsp; 기본 클래스 (ko) | 계층 구조 차트(&N)

Index