|
|
//
// rngsink.h
//
#ifndef RNGSINK_H
#define RNGSINK_H
#include "tfprop.h"
#define BUF_SIZE 16
#define TF_PT_PROXY ((TfPropertyType)-1) // private property type used for CPropStoreProxy data
extern const IID IID_CGeneralPropStore;
class CGeneralPropStore : public ITfPropertyStore, public CComObjectRootImmx { public: CGeneralPropStore() { Dbg_MemSetThisNameID(TEXT("CGeneralPropStore")); } ~CGeneralPropStore();
BOOL _Init(TfGuidAtom guidatom, const VARIANT *pvarValue, DWORD dwPropFlags); BOOL _Init(TfGuidAtom guidatom, int iDataSize, TfPropertyType type, IStream *pStream, DWORD dwPropFlags);
BEGIN_COM_MAP_IMMX(CGeneralPropStore) COM_INTERFACE_ENTRY_IID(IID_CGeneralPropStore, CGeneralPropStore) COM_INTERFACE_ENTRY(ITfPropertyStore) END_COM_MAP_IMMX()
IMMX_OBJECT_IUNKNOWN_FOR_ATL()
//
// ITfPropertyStore
//
STDMETHODIMP GetType(GUID *pguid); STDMETHODIMP GetDataType(DWORD *pdwReserved); STDMETHODIMP GetData(VARIANT *pvarValue); STDMETHODIMP OnTextUpdated(DWORD dwFlags, ITfRange *pRange, BOOL *pfAccept); STDMETHODIMP Shrink(ITfRange *pRange, BOOL *pfFree); STDMETHODIMP Divide(ITfRange *pRangeThis, ITfRange *pRangeNew, ITfPropertyStore **ppPropStore); STDMETHODIMP Clone(ITfPropertyStore **ppPropStore); STDMETHODIMP GetPropertyRangeCreator(CLSID *pclsid); STDMETHODIMP Serialize(IStream *pStream, ULONG *pcb);
protected: BOOL _Init(TfGuidAtom guidatom, TFPROPERTY *ptfp, DWORD dwPropFlags);
TFPROPERTY _prop; DWORD _dwPropFlags; TfGuidAtom _guidatom;
DBG_ID_DECLARE; };
class CPropStoreProxy : public CGeneralPropStore { public: CPropStoreProxy() { Dbg_MemSetThisNameID(TEXT("CPropStoreProxy")); }
BOOL _Init(const CLSID *pclsidTIP, TfGuidAtom guidatom, int iDataSize, IStream *pStream, DWORD dwPropFlags);
//
// ITfPropertyStore
//
STDMETHODIMP GetPropertyRangeCreator(CLSID *pclsid); STDMETHODIMP Clone(ITfPropertyStore **ppPropStore);
private: BOOL _Init(const CLSID *pclsidTIP, TfGuidAtom guidatom, TFPROPERTY *ptfp, DWORD dwPropFlags);
CLSID _clsidTIP; };
class CStaticPropStore : public CGeneralPropStore { public: CStaticPropStore() { Dbg_MemSetThisNameID(TEXT("CStaticPropStore")); }
//
// ITfPropertyStore
//
STDMETHODIMP Shrink(ITfRange *pRange, BOOL *pfFree); STDMETHODIMP Divide(ITfRange *pRangeThis, ITfRange *pRangeNew, ITfPropertyStore **ppPropStore); STDMETHODIMP Clone(ITfPropertyStore **ppPropStore);
private: DBG_ID_DECLARE; };
#endif // RNGSINK_H
|