www.pudn.com > SitaGetWord.rar > IXDictGrabSink.cpp


// IXDictGrabSink.cpp: implementation of the IXDictGrabSink class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "GetWord.h" 
#include "IXDictGrabSink.h" 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
   static const IID IID_IXDictGrabSink = 
{ 0xA06978CE, 0x8077, 0x4470, { 0xAA,0xBC,0x2A,0x10,0x01,0xDC,0x5D,0xE4 } }; 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
MySink::MySink() 
{ 
	m_cRefs=0; 
 
} 
 
MySink::~MySink() 
{ 
 
} 
// STDMETHODIMP 是宏,等价于 long __stdcall 
STDMETHODIMP MySink::QueryInterface(const struct _GUID &iid,void ** ppv) 
{ 
//经试验只查询过IID_IXDictGrabSink 
 
	if(iid==IID_IXDictGrabSink) 
	{ 
		*ppv=this; 
		m_cRefs++; 
		return S_OK; 
	} 
	*ppv=NULL; 
	return E_NOTIMPL; 
} 
 
ULONG __stdcall MySink::AddRef(void) 
{	return ++m_cRefs;	}	// 做个假的就可以,因为反正这个对象在程序结束前是不会退出的 
 
ULONG __stdcall MySink::Release(void) 
{	return --m_cRefs;	}	// 做个假的就可以,因为反正这个对象在程序结束前是不会退出的 
 
STDMETHODIMP MySink::GetTypeInfoCount(unsigned int *) 
{	return E_NOTIMPL;	}	// 不用实现,反正也不用 
 
STDMETHODIMP MySink::GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** ) 
{	return E_NOTIMPL;	}	// 不用实现,反正也不用 
 
STDMETHODIMP MySink::GetIDsOfNames(const IID &,LPOLESTR *bstr,UINT,LCID,DISPID *) 
{ 
	return E_NOTIMPL;	 
}	// 不用实现,反正也不用 
 
STDMETHODIMP MySink::Invoke( 
				long dispID, 
				const struct _GUID &, 
				unsigned long, 
				unsigned short, 
				struct tagDISPPARAMS * pParams, 
				struct tagVARIANT *pvarResult, 
				struct tagEXCEPINFO *, 
				unsigned int *) 
{ 
	return E_NOTIMPL;	 
	// 不用实现,反正也不用 
} 
 
STDMETHODIMP MySink::QueryWord(BSTR WordString, long lCursorX, long lCursorY, BSTR SentenceString, long *lLoc, long *lStart) 
{//只需要这个就够了 
 
	CString strWord=WordString; 
	CString strSentence=SentenceString; 
 
	MyGetWord(strWord,  lCursorX,  lCursorY, strSentence, lLoc, lStart); 
 
	return S_OK; 
}