/**************************************************************************** funcprv.cpp : CFunctionProvider class implementation History: 15-NOV-1999 CSLim Created ****************************************************************************/ #include "private.h" #include "globals.h" #include "common.h" #include "korimx.h" #include "funcprv.h" #include "fnrecon.h" #include "fnconfig.h" #include "helpers.h" #include "immxutil.h" ////////////////////////////////////////////////////////////////////////////// // // CFunctionProvider // ////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------- CFunctionProvider::CFunctionProvider Ctor ---------------------------------------------------------------------------*/ CFunctionProvider::CFunctionProvider(CKorIMX *pime) : CFunctionProviderBase(pime->GetTID()) { Init(CLSID_KorIMX, L"Kor TFX"); _pime = pime; } /*--------------------------------------------------------------------------- CFunctionProvider::GetFunction Get Fuction object ---------------------------------------------------------------------------*/ STDAPI CFunctionProvider::GetFunction(REFGUID rguid, REFIID riid, IUnknown **ppunk) { *ppunk = NULL; if (!IsEqualIID(rguid, GUID_NULL)) return E_NOINTERFACE; if (IsEqualIID(riid, IID_ITfFnReconversion)) { // ITfFnReconversion is used for correction. Through this function, the // applications can get the simple alternative lists or ask the function to show // the alternative list UI. *ppunk = new CFnReconversion(_pime, this); } else if (IsEqualIID(riid, IID_ITfFnConfigure)) { CFnConfigure *pconfig = new CFnConfigure(this); *ppunk = SAFECAST(pconfig, ITfFnConfigure *); } else if (IsEqualIID(riid, IID_ITfFnConfigureRegisterWord)) { CFnConfigure *pconfig = new CFnConfigure(this); *ppunk = SAFECAST(pconfig, ITfFnConfigureRegisterWord *); } else if (IsEqualIID(riid, IID_ITfFnShowHelp)) { CFnShowHelp *phelp = new CFnShowHelp(this); *ppunk = SAFECAST(phelp, ITfFnShowHelp *); } if (*ppunk) return S_OK; return E_NOINTERFACE; }