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.
 
 
 
 
 
 

81 lines
1.8 KiB

//
// dim.h
//
#ifndef DIM_H
#define DIM_H
#include "private.h"
#include "compart.h"
#define ICS_STACK_SIZE 2
class CInputContext;
class CEmptyInputContext;
extern const IID IID_PRIV_CDIM;
class CDocumentInputManager : public ITfDocumentMgr,
public CCompartmentMgr,
public CComObjectRootImmx
{
public:
CDocumentInputManager();
~CDocumentInputManager();
BEGIN_COM_MAP_IMMX(CDocumentInputManager)
COM_INTERFACE_ENTRY(ITfDocumentMgr)
COM_INTERFACE_ENTRY(ITfCompartmentMgr)
COM_INTERFACE_ENTRY_IID(IID_PRIV_CDIM, CDocumentInputManager)
END_COM_MAP_IMMX()
IMMX_OBJECT_IUNKNOWN_FOR_ATL()
//
// ITfDocumentManager
//
STDMETHODIMP CreateContext(TfClientId tid, DWORD dwFlags, IUnknown *punk, ITfContext **ppic, TfEditCookie *pecTextStore);
STDMETHODIMP Push(ITfContext *pic);
STDMETHODIMP Pop(DWORD dwFlags);
STDMETHODIMP GetTop(ITfContext **ppic);
STDMETHODIMP GetBase(ITfContext **ppBase);
STDMETHODIMP EnumContexts(IEnumTfContexts **ppEnum);
BOOL _Pop(CThreadInputMgr *tim);
HRESULT _GetContext(int iStack, ITfContext **ppic);
CInputContext *_GetTopIC();
int _GetCurrentStack() { return _iStack; }
CInputContext *_GetIC(int iStack)
{
if (iStack < 0)
return NULL;
if (iStack > _iStack)
return NULL;
return _Stack[iStack];
}
private:
CInputContext *_Stack[ICS_STACK_SIZE];
int _iStack;
BOOL _fPoppingStack : 1;
CEmptyInputContext *_peic;
DBG_ID_DECLARE;
};
inline CDocumentInputManager *GetCDocumentInputMgr(IUnknown *punk)
{
CDocumentInputManager *dim;
punk->QueryInterface(IID_PRIV_CDIM, (void **)&dim);
return dim;
}
#endif // DIM_H