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.
177 lines
5.3 KiB
177 lines
5.3 KiB
/*++
|
|
|
|
Copyright (c) 2001, Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
txtevcb.h
|
|
|
|
Abstract:
|
|
|
|
This file defines the CTextEventSinkCallBack Class.
|
|
|
|
Author:
|
|
|
|
Revision History:
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
|
|
#ifndef _TXTEVCB_H_
|
|
#define _TXTEVCB_H_
|
|
|
|
#include "template.h"
|
|
#include "imc.h"
|
|
#include "context.h"
|
|
|
|
class CTextEventSinkCallBack : public CTextEventSink
|
|
{
|
|
public:
|
|
CTextEventSinkCallBack(HIMC hIMC,
|
|
TfClientId tid,
|
|
Interface_Attach<ITfContext> pic,
|
|
LIBTHREAD* pLibTLS)
|
|
: m_hIMC(hIMC), m_tid(tid), m_ic(pic), m_pLibTLS(pLibTLS),
|
|
CTextEventSink(TextEventSinkCallback, NULL)
|
|
{
|
|
}
|
|
virtual ~CTextEventSinkCallBack() { }
|
|
|
|
void SetCallbackDataPointer(void* pv)
|
|
{
|
|
SetCallbackPV(pv);
|
|
};
|
|
|
|
BOOL _IsSapiFeedbackUIPresent(Interface_Attach<ITfContext>& ic, TESENDEDIT *ee);
|
|
BOOL _IsComposingPresent(Interface_Attach<ITfContext>& ic, TESENDEDIT *ee);
|
|
BOOL _IsInterim(Interface_Attach<ITfContext>& ic, TESENDEDIT *ee);
|
|
BOOL _IsCompositionChanged(Interface_Attach<ITfContext>& ic, TESENDEDIT *ee);
|
|
|
|
//
|
|
// Callbacks
|
|
//
|
|
private:
|
|
static HRESULT TextEventSinkCallback(UINT uCode, void *pv, void *pvData);
|
|
|
|
//
|
|
// Enumrate property
|
|
//
|
|
typedef struct _EnumPropertyArgs
|
|
{
|
|
Interface<ITfProperty> Property;
|
|
TfEditCookie ec;
|
|
GUID comp_guid;
|
|
LIBTHREAD *pLibTLS;
|
|
} EnumPropertyArgs;
|
|
|
|
static ENUM_RET EnumPropertyCallback(ITfRange* pRange, EnumPropertyArgs *pargs);
|
|
|
|
//
|
|
// Enumrate track property
|
|
//
|
|
typedef struct _EnumTrackPropertyArgs
|
|
{
|
|
Interface<ITfReadOnlyProperty> Property;
|
|
TfEditCookie ec;
|
|
|
|
GUID **guids;
|
|
int num_guids;
|
|
|
|
LIBTHREAD *pLibTLS;
|
|
} EnumTrackPropertyArgs;
|
|
|
|
static ENUM_RET EnumTrackPropertyCallback(ITfRange* pRange, EnumTrackPropertyArgs *pargs);
|
|
|
|
//
|
|
// Enumrate property update
|
|
//
|
|
typedef struct _EnumPropertyUpdateArgs
|
|
{
|
|
_EnumPropertyUpdateArgs(ITfContext* pv, TfClientId p1, IMCLock& p2, LIBTHREAD* p3) : ic(pv), tid(p1), imc(p2), pLibTLS(p3) { }
|
|
|
|
Interface<ITfProperty> Property;
|
|
TfEditCookie ec;
|
|
Interface_Attach<ITfContext> ic;
|
|
IMCLock& imc;
|
|
DWORD dwDeltaStart;
|
|
TfClientId tid;
|
|
LIBTHREAD* pLibTLS;
|
|
} EnumPropertyUpdateArgs;
|
|
|
|
static ENUM_RET EnumPropertyUpdateCallback(ITfRange* update_range, EnumPropertyUpdateArgs *pargs);
|
|
|
|
//
|
|
// Enumrate property change
|
|
//
|
|
typedef struct _EnumPropertyChangedCallbackArgs
|
|
{
|
|
TfEditCookie ec;
|
|
} EnumPropertyChangedCallbackArgs;
|
|
|
|
static ENUM_RET EnumPropertyChangedCallback(ITfRange* update_range, EnumPropertyChangedCallbackArgs *pargs);
|
|
|
|
//
|
|
// Enumrate find first track comp range
|
|
//
|
|
typedef struct _EnumFindFirstTrackCompRangeArgs
|
|
{
|
|
TfEditCookie ec;
|
|
Interface<ITfProperty> Property;
|
|
Interface<ITfRange> Range;
|
|
} EnumFindFirstTrackCompRangeArgs;
|
|
|
|
static ENUM_RET EnumFindFirstTrackCompRangeCallback(ITfRange* update_range, EnumFindFirstTrackCompRangeArgs *pargs);
|
|
|
|
//
|
|
// Edit session helper
|
|
//
|
|
protected:
|
|
HRESULT EscbUpdateCompositionString(IMCLock& imc)
|
|
{
|
|
return ::EscbUpdateCompositionString(imc, m_tid, m_ic, m_pLibTLS, 0, 0);
|
|
}
|
|
|
|
HRESULT EscbUpdateCompositionString(IMCLock& imc, DWORD dwDeltaStart)
|
|
{
|
|
return ::EscbUpdateCompositionString(imc, m_tid, m_ic, m_pLibTLS, dwDeltaStart, 0);
|
|
}
|
|
|
|
HRESULT EscbCompComplete(IMCLock& imc, BOOL fSync)
|
|
{
|
|
return ::EscbCompComplete(imc, m_tid, m_ic, m_pLibTLS, fSync);
|
|
}
|
|
|
|
HRESULT EscbClearDocFeedBuffer(IMCLock& imc, CicInputContext& CicContext, BOOL fSync)
|
|
{
|
|
return ::EscbClearDocFeedBuffer(imc, CicContext, m_tid, m_ic, m_pLibTLS, fSync);
|
|
}
|
|
|
|
HRESULT EscbRemoveProperty(IMCLock& imc, const GUID* guid)
|
|
{
|
|
return ::EscbRemoveProperty(imc, m_tid, m_ic, m_pLibTLS, guid);
|
|
}
|
|
|
|
//
|
|
// Edit session friend
|
|
//
|
|
private:
|
|
friend HRESULT EscbUpdateCompositionString(IMCLock& imc, TfClientId tid, Interface_Attach<ITfContext> pic, LIBTHREAD* pLibTLS,
|
|
DWORD dwDeltaStart,
|
|
DWORD dwFlags);
|
|
friend HRESULT EscbCompComplete(IMCLock& imc, TfClientId tid, Interface_Attach<ITfContext> pic, LIBTHREAD* pLibTLS,
|
|
BOOL fSync);
|
|
friend HRESULT EscbClearDocFeedBuffer(IMCLock& imc, CicInputContext& CicContext, TfClientId tid, Interface_Attach<ITfContext> pic, LIBTHREAD* pLibTLS,
|
|
BOOL fSync);
|
|
|
|
friend HRESULT EscbRemoveProperty(IMCLock& imc, TfClientId tid, Interface_Attach<ITfContext> pic, LIBTHREAD* pLibTLS,
|
|
const GUID* guid);
|
|
|
|
private:
|
|
Interface_Attach<ITfContext> m_ic;
|
|
TfClientId m_tid;
|
|
LIBTHREAD* m_pLibTLS;
|
|
HIMC m_hIMC;
|
|
};
|
|
|
|
#endif // _TXTEVCB_H_
|