개체에 연결 지점을 추가

ATL 자습서 연결 지점에 대 한 지원을 어떻게 컨트롤을 만드는 방법을 보여 주는 이벤트 및 연결 point.nbsp;을 구현 하는 방법을 추가 하 ATL 연결 지점을 구현 하는 방법에 대해 설명 합니다 IConnectionPointImpl(&N)。

연결 지점을 구현 하려면 두 가지 방법이 있습니다.:

어느 경우이 든, 연결 지점 마법사 작업을 수행 하는 형식 라이브러리를 사용。

메모nbsp;??.Idl 파일을 다시 컴파일하고 하 고 컨트롤이 나 개체에 연결 지점을 추가 하는 절차를 수행 해야 합니다 dispinterface는 당신이 이미 연결 지점을 구현 하는 메서드를 추가할 때마다(&N)。

컨트롤이 나 개체에 연결 지점을 추가 하려면

  1. .Idl 파일 라이브러리 블록에 dispinterface를 정의 합니다. ATL 개체 마법사에서 특성 탭에서 지원 연결점 확인란을 선택 하는 경우는 dispinterface 이미 만들어집니다. 지원 연결 지점 확인란을 선택 하지 않은 경우.idl 파일을 dispinterface를 수동으로 추가 해야 합니다. 다음은 dispinterface의 예입니다. 아웃 바운드 인터페이스는 디스패치 인터페이스 필요 하지만 VBScript 및 Javascript와 같은 많은 스크립팅 언어 필요,이 예제에서는 두 개의 dispinterfaces 사용 하므로:
    라이브러리 DProjLib { importlib("stdole32.tlb"); importlib("stdole2.tlb");[ uuid(57BC50F0-780B-11d1-8C44-0060083E866C), helpstring ("버디 이벤트") ] dispinterface DBuddyEvents { 속성: 방법: };
    
    

    Uuidgen.exe 또는 guidgen.exe 유틸리티를 사용 하 여 GUID를 생성。

  2. Dispinterface로 추가 [기본, 소스] object.nbsp;에 대 한 coclass 인터페이스 다시 말하지만,이 컨트롤에 대 한 ATL 개체 마법사에서 특성 탭에서 지원 연결점 확인란을 선택한 경우 마법사 생성 됩니다 [기본값, 소스] 항목. 이 항목을 수동으로 추가 하려면 굵게 줄 추가(&N):
    coclass 친구 { [기본값] 인터페이스 IBuddy;[기본, 소스] dispinterface DBuddyEvents;}

    .Idl 파일에 참조를 Circ ATL 샘플 예。

  3. 클래스 뷰 를 사용 하 여 이벤트 인터페이스의 메서드 및 속성 추가。

  4. 후는 dispinterface 완전히 정의 된 FileView .idl 파일을 마우스 오른쪽 단추로 클릭 하 고 컴파일 option.nbsp;를 선택 하 여.idl 파일 컴파일 이 형식 라이브러리를 생산할 예정 이다(&N)。

  5. 클래스 뷰 에서 클래스를 마우스 오른쪽 단추로 클릭 하 고 구현 연결 지점...를 선택 합니다. 대화 상자에는 하나 이상의 형식 라이브러리 탭 표시 됩니다. 및 각 탭에는 해당 type library.nbsp;에 대 한 인터페이스 표시 됩니다. 인터페이스를 선택 하 고 확인을 누릅니다 경우(&N):
    • 이벤트에 대 한 발신 전화를 할 것입니다 코드를 구현 하는 이벤트 프록시 클래스를 사용 하 여 헤더 파일을 생성。

    • 연결 지점 맵에 항목 추가。

    • 주석 및 # error (NULL 매개 변수는 dispID 주소로 바꿀 것인지 말하고) IProvideClassInfo2Impl 매개 변수 목록에 추가。

    Computer.nbsp;에 모든 typelib의 목록에 표시 됩니다 하지 형식 라이브러리를 만든 경우 만 다른 typelib에 정확한 동일한 나가는 인터페이스를 구현 하려는 경우 연결 지점을 정의 하 이러한 다른 typelib 중 하나를 사용 해야 합니다.? Coclass의 기본 소스 인터페이스 없이 typelib를 구축 하는 경우 대화 상자 보고 형식 라이브러리에 적합 (소스) 인터페이스 없음 경고 메시지가 표시 됩니다(&N).

다른 개체의 형식 라이브러리에서 가져온 연결 지점을 구현 하려면

  1. ClassView에 BEGIN_COM_MAP 매크로 구현 하는 클래스를 마우스 오른쪽 단추로 클릭 하 고 바로 가기 메뉴에서 연결 지점 구현 선택。

  2. 구현 연결 지점 대화 상자에서 추가 Typelib에...。

  3. 사용 가능한 형식 libraries.nbsp; 중 하나에서 선택 형식 라이브러리를 선택한 후 형식 라이브러리에서 사용 가능한 인터페이스 목록을 나타납니다(&N).

  4. 사용할 수 있는 인터페이스 중 하나 이상을 선택 하 고 확인 을 클릭。

  5. .Idl 파일을 편집:
    • 이벤트 소스를 사용 하는 개체에 대 한 idl 파일에서 dispinterface를 복사。

    • Importlib 명령어를 사용 하 여 해당 형식 라이브러리에。

다음은 Circ 컨트롤에서 연결 지점을 사용 하는.idl 파일에서 예제。

[
   uuid(38BBFD91-7575-11D1-8C3C-0060083E866C),
   version(1.0),
   helpstring ("16190 1.0 형식 라이브러리")
]
라이브러리 MY16190Lib
{
   importlib("stdole32.tlb");
   importlib("stdole2.tlb");
   importlib("D:\\ATL25\\samples\\circ\\circ.tlb");   / / ****이 줄 [추가
      uuid(38BBFD9E-7575-11D1-8C3C-0060083E866C),
      helpstring ("Atl16190Ctl 클래스")
   ]
   coclass Atl16190Ctl
   {
      [기본값] 인터페이스 IAtl16190Ctl;
      [기본, 소스] dispinterface _CircEvents;      / / ****이 하나
   };
}

Index