2011-09-01 3 views
1

COleDocument (COleControl 대신)에서 확장하는 개체에 IConnectionPointContainer를 구현하려는 COM/MFC에 대한 경험이있는 사람이 있습니까? 누군가가 어떤 조언을 해 주시겠습니까? 또는 이것을 수행하는 방법에 대한 지침을 알려줄 수 있습니까? 문서에 의해 구현 된 다른 인터페이스 구현의 일부로 만들어진 문서 변경 내용을 수신하는 개체에 대한 알림을 구현해야합니다.COleDocument (COleControl 대신)에서 확장하는 개체에 IConnectionPointContainer 구현

답변

1

MFC 연결 매크로는 COleControl은 아니지만 CCmdTarget과 관련이 있습니다. DECLARE_CONNECTION_MAP/BEGIN_CONNECTION_MAP 등 as long as your class is derived from CCmdTarget을 사용할 수 있으며이 경우 COleDocument는입니다. * '클래스 CMyDoc에서 변환 할 수 없습니다 :

연구 교재는 :

TN038: MFC/OLE IUnknown Implementation

Connpts.exe sample demonstrates how to implement connection points and connection point sinks in Visual C++

+0

는 사실은 이미 시도했습니다, 나는 컴파일 할 때, 나는 "오류 C2440를 얻을 :'static_cast를 ' 'to'class ATL :: _ ICPLocator <& struct _GUID const IID_IMyEventSink> * ' 가리키는 형식은 관련이 없으며 reinterpret_cast, C 스타일의 캐스트 또는 함수 스타일의 캐스트가 필요합니다. " –

+0

코드 게시 ... VC2010에서 오류를 컴파일하십시오. –

+0

이제이 기사의 조언을 사용하여 코드를 컴파일 할 수있었습니다. http://msdn.microsoft.com/en-us/library/41yhk4w0(v=vs.80).aspx 싱크대에 조언을하려면 오류 코드 0x80004002가 E_NOINTERFACE 인 AtlAdvise에서 반환됩니다. 나는 조언을 다음과 같이 시도했다 : http://support.microsoft.com/kb/183216/en-us,하지만 성공과 함께. 방금 뭔가 빠졌나요? 내 싱크 인터페이스는 IDual이며, 내가 본 것에서 볼 때 객체에 의해 구현 된 다중 IDual 인터페이스를 가질 수 있습니다. –