////////////////////////////////////////////////////////////////////// // // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED // TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A // PARTICULAR PURPOSE. // // Copyright (C) 2003 Microsoft Corporation. All rights reserved. // // TextService.h // // CTextService declaration. // ////////////////////////////////////////////////////////////////////// #ifndef TEXTSERVICE_H #define TEXTSERVICE_H class CTextService : public ITfTextInputProcessor, public ITfThreadMgrEventSink { public: CTextService(); ~CTextService(); // IUnknown STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // ITfTextInputProcessor STDMETHODIMP Activate(ITfThreadMgr *pThreadMgr, TfClientId tfClientId); STDMETHODIMP Deactivate(); // ITfThreadMgrEventSink STDMETHODIMP OnInitDocumentMgr(ITfDocumentMgr *pDocMgr); STDMETHODIMP OnUninitDocumentMgr(ITfDocumentMgr *pDocMgr); STDMETHODIMP OnSetFocus(ITfDocumentMgr *pDocMgrFocus, ITfDocumentMgr *pDocMgrPrevFocus); STDMETHODIMP OnPushContext(ITfContext *pContext); STDMETHODIMP OnPopContext(ITfContext *pContext); // CClassFactory factory callback static HRESULT CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObj); ITfThreadMgr *_GetThreadMgr() { return _pThreadMgr; } private: // initialize and uninitialize ThreadMgrEventSink. BOOL _InitThreadMgrEventSink(); void _UninitThreadMgrEventSink(); // // state // ITfThreadMgr *_pThreadMgr; // The cookie of ThreadMgrEventSink DWORD _dwThreadMgrEventSinkCookie; LONG _cRef; // COM ref count }; #endif // TEXTSERVICE_H