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;
}