|
|
//
// kes.h
//
#ifndef KES_H
#define KES_H
#include "private.h"
typedef HRESULT (*KESCALLBACK)(UINT uCode, ITfContext *pic, WPARAM wParam, LPARAM lParam, BOOL *pfEaten, void *pv); typedef HRESULT (*KESPREKEYCALLBACK)(ITfContext *pic, REFGUID rguid, BOOL *pfEaten, void *pv);
#define KES_CODE_FOCUS 0x00000000
#define KES_CODE_KEYUP 0x00000001
#define KES_CODE_KEYDOWN 0x00000002
#define KES_CODE_TEST 0x80000000
typedef struct tag_KESPRESERVEDKEY { const GUID *pguid; TF_PRESERVEDKEY tfpk; const WCHAR *psz; } KESPRESERVEDKEY; class CKeyEventSink : public ITfKeyEventSink { public: CKeyEventSink(KESCALLBACK pfnCallback, void *pv); CKeyEventSink(KESCALLBACK pfnCallback, KESPREKEYCALLBACK pfnPrekeyCallback, void *pv); ~CKeyEventSink();
//
// IUnknown methods
//
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//
// ITfWin32KeyEventSink
//
STDMETHODIMP OnSetFocus(BOOL fForeground); STDMETHODIMP OnTestKeyDown(ITfContext *pic, WPARAM wParam, LPARAM lParam, BOOL *pfEaten); STDMETHODIMP OnKeyDown(ITfContext *pic, WPARAM wParam, LPARAM lParam, BOOL *pfEaten); STDMETHODIMP OnTestKeyUp(ITfContext *pic, WPARAM wParam, LPARAM lParam, BOOL *pfEaten); STDMETHODIMP OnKeyUp(ITfContext *pic, WPARAM wParam, LPARAM lParam, BOOL *pfEaten); STDMETHODIMP OnPreservedKey(ITfContext *pic, REFGUID rguid, BOOL *pfEaten);
HRESULT _Register(ITfThreadMgr *ptim, TfClientId tid, const KESPRESERVEDKEY *pprekey); HRESULT _Unregister(ITfThreadMgr *ptim, TfClientId tid, const KESPRESERVEDKEY *pprekey);
private: KESCALLBACK _pfnCallback; KESPREKEYCALLBACK _pfnPreKeyCallback; void *_pv; DWORD _dwCookiePreservedKey; int _cRef; };
#endif // KES_H
|