다음을 통해 공유


DispSink 특성 샘플: Dispatch 인터페이스를 통해 Singleton COM 서버에서 발생한 이벤트 처리

업데이트: 2007년 11월

DispSink 특성 샘플에서는 이벤트를 발생시키는 데 사용되는 distpatch 인터페이스와 고유의 이중 인터페이스가 있는 singleton 서버 개체(인스턴스가 하나만 있을 수 있는 개체)를 보여 줍니다.

DispSink 샘플은 이 샘플의 특성을 사용하지 않는 버전입니다.

참고:

이 샘플을 비롯한 일부 샘플은 Visual C++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다.

보안 정보:

이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다.

샘플 및 이를 설치하기 위한 지침을 가져오려면

  • Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.

    자세한 내용은 샘플 파일 찾기를 참조하십시오.

  • 최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.

  • 컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.

샘플 빌드 및 실행

이 샘플을 빌드하고 실행하려면

  1. 솔루션 파일인 DispSink.sln을 엽니다.

  2. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

  3. ActiveX Control Test Container의 인스턴스를 두 개 이상 열고 클라이언트 컨트롤인 DispCtl을 각 인스턴스에 삽입합니다. 테스트 컨테이너에 액세스하는 방법에 대한 자세한 내용은 Test Container를 사용하여 속성 및 이벤트 테스트를 참조하십시오.

  4. 모든 컨트롤에 대해 Connect 메서드를 호출합니다.

  5. 컨트롤 중 하나에 대해 Send 메서드를 호출합니다. 메서드 호출 대화 상자의 매개 변수 형식 필드를 VT_BSTR로 변경한 다음 매개 변수 값 상자에 문자열을 입력합니다. Invoke 단추를 클릭합니다. 입력한 문자열은 연결된 모든 컨트롤의 중앙에 표시됩니다.

  6. 모든 컨트롤을 삭제하기 전에 컨트롤에 대해 Disconnect 메서드를 호출합니다.

샘플 작동 방식

이 서버는 이벤트를 발생시키는 데 사용되는 dispatch 인터페이스뿐만 아니라 자체의 이중 인터페이스도 포함된 singleton 개체입니다. dispatch 인터페이스는 dispinterface 특성을 사용하여 .idl 파일에 배치됩니다. 서버 개체는 해당 개체의 이중 인터페이스 Send 메서드를 통해 데이터를 받고, dispatch 인터페이스의 Transfer 이벤트를 통해 연결된 모든 구성 요소에 데이터를 전송합니다. Dispserver에서는 event_source 특성을 사용하고, Dispclient에서는 event_receiver 특성을 사용합니다.

클라이언트는 서버 개체를 포함하는 ActiveX 컨트롤입니다. 이 컨트롤은 서버 개체가 발생시킨 Transfer 이벤트에 응답하며, Connect, SendDisconnect 메서드가 있는 이중 인터페이스를 포함합니다. BSTR이 들어 있는 variant를 사용하여 Transfer 이벤트가 발생되면 해당 문자열이 컨트롤 중앙에 표시됩니다.

특성

이 샘플에서는 다음의 특성을 사용합니다.

  • DISPSINK/DispClient   coclass, dual, event_receiver, helpstring, id, module, object, pointer_default, registration_script, threading, uuid, version, vi_progid

  • DISPSINK/DispServer   coclass, default, dispinterface, dual, event_source, helpstring, id, module, object, pointer_default, threading, uuid, vi_progid

키워드

이 샘플에서는 다음의 키워드를 사용합니다.

#import, CComAutoThreadModule, CComSimpleThreadAllocator, CoCreateInstance, DECLARE_CLASSFACTORY_AUTO_THREAD, FireViewChange

참고 항목

기타 리소스

ATL 특성 샘플