Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

115 lines
3.6 KiB

//
// case.h
//
// CCaseTextService declaration.
//
#ifndef CASE_H
#define CASE_H
class CLangBarItemButton;
class CSnoopWnd;
class CCaseTextService : public ITfTextInputProcessor,
public ITfThreadMgrEventSink,
public ITfTextEditSink,
public ITfThreadFocusSink,
public ITfKeyEventSink
{
public:
CCaseTextService();
~CCaseTextService();
// 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);
// ITfThreadFocusSink
STDMETHODIMP OnSetThreadFocus();
STDMETHODIMP OnKillThreadFocus();
// ITfTextEditSink
STDMETHODIMP OnEndEdit(ITfContext *pContext, TfEditCookie ecReadOnly, ITfEditRecord *pEditRecord);
// ITfKeyEventSink
STDMETHODIMP OnSetFocus(BOOL fForeground);
STDMETHODIMP OnTestKeyDown(ITfContext *pContext, WPARAM wParam, LPARAM lParam, BOOL *pfEaten);
STDMETHODIMP OnKeyDown(ITfContext *pContext, WPARAM wParam, LPARAM lParam, BOOL *pfEaten);
STDMETHODIMP OnTestKeyUp(ITfContext *pContext, WPARAM wParam, LPARAM lParam, BOOL *pfEaten);
STDMETHODIMP OnKeyUp(ITfContext *pContext, WPARAM wParam, LPARAM lParam, BOOL *pfEaten);
STDMETHODIMP OnPreservedKey(ITfContext *pContext, REFGUID rguid, BOOL *pfEaten);
// CClassFactory factory callback
static HRESULT CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObj);
// server registration
static BOOL RegisterProfiles();
static void UnregisterProfiles();
static BOOL RegisterCategories(BOOL fRegister);
static BOOL RegisterServer();
static void UnregisterServer();
// language bar menu handlers
static void _Menu_HelloWord(CCaseTextService *_this);
static void _Menu_FlipSel(CCaseTextService *_this);
static void _Menu_FlipDoc(CCaseTextService *_this);
static void _Menu_ShowSnoopWnd(CCaseTextService *_this);
static void _Menu_FlipKeys(CCaseTextService *_this);
ITfThreadMgr *_GetThreadMgr() { return _pThreadMgr; }
TfClientId _GetClientId() { return _tfClientId; }
BOOL _IsSnoopWndVisible() { return _fShowSnoop; }
BOOL _IsKeyFlipping() { return _fFlipKeys; }
private:
// init methods
BOOL _InitLanguageBar();
BOOL _InitThreadMgrSink();
BOOL _InitSnoopWnd();
BOOL _InitTextEditSink(ITfDocumentMgr *pDocMgr);
BOOL _InitKeystrokeSink();
BOOL _InitPreservedKey();
// uninit methods
void _UninitLanguageBar();
void _UninitThreadMgrSink();
void _UninitSnoopWnd();
void _UninitKeystrokeSink();
void _UninitPreservedKey();
//
// state
//
ITfThreadMgr *_pThreadMgr;
TfClientId _tfClientId;
BOOL _fShowSnoop; // hide/show the snoop window popup
CSnoopWnd *_pSnoopWnd;
BOOL _fFlipKeys;
CLangBarItemButton *_pLangBarItem;
DWORD _dwThreadMgrEventSinkCookie;
DWORD _dwThreadFocusSinkCookie;
DWORD _dwTextEditSinkCookie;
ITfContext *_pTextEditSinkContext;
LONG _cRef; // COM ref count
};
#endif // CASE_H