WindowsXP-SP1/windows/advcore/ctf/inc/kes.h
2020-09-30 16:53:49 +02:00

62 lines
1.9 KiB
C++

//
// 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