Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455/* * Copyright (C) 2005 Mike McCormack * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
#ifndef _TEXTSERV_H#define _TEXTSERV_H
#ifdef __cplusplusextern "C" {#endif
#ifdef __REACTOS__#include <wine/asm.h>#endif
#ifdef __cplusplus#define THISCALLMETHOD_(type,method) virtual type __thiscall method#else#define THISCALLMETHOD_(type,method) type (__thiscall *method)#endif
EXTERN_C const IID IID_ITextServices;EXTERN_C const IID IID_ITextHost;EXTERN_C const IID IID_ITextHost2;
/***************************************************************************** * ITextServices interface */#define INTERFACE ITextServicesDECLARE_INTERFACE_(ITextServices,IUnknown){ /*** IUnknown methods ***/ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** ITextServices methods ***/
THISCALLMETHOD_(HRESULT,TxSendMessage)( THIS_ UINT msg, WPARAM wparam, LPARAM lparam, LRESULT* plresult) PURE;
THISCALLMETHOD_(HRESULT,TxDraw)( THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hdcDraw, HDC hicTargetDev, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, LPRECT lprcUpdate, BOOL (CALLBACK * pfnContinue)(DWORD), DWORD dwContinue, LONG lViewId) PURE;
THISCALLMETHOD_(HRESULT,TxGetHScroll)( THIS_ LONG* plMin, LONG* plMax, LONG* plPos, LONG* plPage, BOOL* pfEnabled) PURE;
THISCALLMETHOD_(HRESULT,TxGetVScroll)( THIS_ LONG* plMin, LONG* plMax, LONG* plPos, LONG* plPage, BOOL* pfEnabled) PURE;
THISCALLMETHOD_(HRESULT,OnTxSetCursor)( THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hdcDraw, HDC hicTargetDev, LPCRECT lprcClient, INT x, INT y) PURE;
THISCALLMETHOD_(HRESULT,TxQueryHitPoint)( THIS_ DWORD dwDrawAspect, LONG lindex, void* pvAspect, DVTARGETDEVICE* ptd, HDC hdcDraw, HDC hicTargetDev, LPCRECT lprcClient, INT x, INT y, DWORD* pHitResult) PURE;
THISCALLMETHOD_(HRESULT,OnTxInPlaceActivate)( THIS_ LPCRECT prcClient) PURE;
THISCALLMETHOD_(HRESULT,OnTxInPlaceDeactivate)( THIS ) PURE;
THISCALLMETHOD_(HRESULT,OnTxUIActivate)( THIS ) PURE;
THISCALLMETHOD_(HRESULT,OnTxUIDeactivate)( THIS ) PURE;
THISCALLMETHOD_(HRESULT,TxGetText)( THIS_ BSTR* pbstrText) PURE;
THISCALLMETHOD_(HRESULT,TxSetText)( THIS_ LPCWSTR pszText) PURE;
THISCALLMETHOD_(HRESULT,TxGetCurTargetX)( THIS_ LONG* x) PURE;
THISCALLMETHOD_(HRESULT,TxGetBaseLinePos)( THIS_ LONG* x) PURE;
THISCALLMETHOD_(HRESULT,TxGetNaturalSize)( THIS_ DWORD dwAspect, HDC hdcDraw, HDC hicTargetDev, DVTARGETDEVICE* ptd, DWORD dwMode, const SIZEL* psizelExtent, LONG* pwidth, LONG* pheight) PURE;
THISCALLMETHOD_(HRESULT,TxGetDropTarget)( THIS_ IDropTarget** ppDropTarget) PURE;
THISCALLMETHOD_(HRESULT,OnTxPropertyBitsChange)( THIS_ DWORD dwMask, DWORD dwBits) PURE;
THISCALLMETHOD_(HRESULT,TxGetCachedSize)( THIS_ DWORD* pdwWidth, DWORD* pdwHeight) PURE;
};#undef INTERFACE
#ifdef COBJMACROS/*** IUnknown methods ***/#define ITextServices_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)#define ITextServices_AddRef(p) (p)->lpVtbl->AddRef(p)#define ITextServices_Release(p) (p)->lpVtbl->Release(p)#endif
typedef enum _TXTBACKSTYLE { TXTBACK_TRANSPARENT = 0, TXTBACK_OPAQUE} TXTBACKSTYLE;
enum TXTHITRESULT { TXTHITRESULT_NOHIT = 0, TXTHITRESULT_TRANSPARENT = 1, TXTHITRESULT_CLOSE = 2, TXTHITRESULT_HIT = 3};
enum TXTNATURALSIZE { TXTNS_FITTOCONTENT = 1, TXTNS_ROUNDTOLINE = 2};
enum TXTVIEW { TXTVIEW_ACTIVE = 0, TXTVIEW_INACTIVE = -1};
#define TXTBIT_RICHTEXT 0x000001#define TXTBIT_MULTILINE 0x000002#define TXTBIT_READONLY 0x000004#define TXTBIT_SHOWACCELERATOR 0x000008#define TXTBIT_USEPASSWORD 0x000010#define TXTBIT_HIDESELECTION 0x000020#define TXTBIT_SAVESELECTION 0x000040#define TXTBIT_AUTOWORDSEL 0x000080#define TXTBIT_VERTICAL 0x000100#define TXTBIT_SELBARCHANGE 0x000200#define TXTBIT_WORDWRAP 0x000400#define TXTBIT_ALLOWBEEP 0x000800#define TXTBIT_DISABLEDRAG 0x001000#define TXTBIT_VIEWINSETCHANGE 0x002000#define TXTBIT_BACKSTYLECHANGE 0x004000#define TXTBIT_MAXLENGTHCHANGE 0x008000#define TXTBIT_SCROLLBARCHANGE 0x010000#define TXTBIT_CHARFORMATCHANGE 0x020000#define TXTBIT_PARAFORMATCHANGE 0x040000#define TXTBIT_EXTENTCHANGE 0x080000#define TXTBIT_CLIENTRECTCHANGE 0x100000#define TXTBIT_USECURRENTBKG 0x200000
/***************************************************************************** * ITextHost interface */#define INTERFACE ITextHostDECLARE_INTERFACE_(ITextHost,IUnknown){ /*** IUnknown methods ***/ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** ITextHost methods ***/ THISCALLMETHOD_(HDC,TxGetDC)( THIS ) PURE;
THISCALLMETHOD_(INT,TxReleaseDC)( THIS_ HDC hdc) PURE;
THISCALLMETHOD_(BOOL,TxShowScrollBar)( THIS_ INT fnBar, BOOL fShow) PURE;
THISCALLMETHOD_(BOOL,TxEnableScrollBar)( THIS_ INT fuSBFlags, INT fuArrowflags) PURE;
THISCALLMETHOD_(BOOL,TxSetScrollRange)( THIS_ INT fnBar, LONG nMinPos, INT nMaxPos, BOOL fRedraw) PURE;
THISCALLMETHOD_(BOOL,TxSetScrollPos)( THIS_ INT fnBar, INT nPos, BOOL fRedraw) PURE;
THISCALLMETHOD_(void,TxInvalidateRect)( THIS_ LPCRECT prc, BOOL fMode) PURE;
THISCALLMETHOD_(void,TxViewChange)( THIS_ BOOL fUpdate) PURE;
THISCALLMETHOD_(BOOL,TxCreateCaret)( THIS_ HBITMAP hbmp, INT xWidth, INT yHeight) PURE;
THISCALLMETHOD_(BOOL,TxShowCaret)( THIS_ BOOL fShow) PURE;
THISCALLMETHOD_(BOOL,TxSetCaretPos)( THIS_ INT x, INT y) PURE;
THISCALLMETHOD_(BOOL,TxSetTimer)( THIS_ UINT idTimer, UINT uTimeout) PURE;
THISCALLMETHOD_(void,TxKillTimer)( THIS_ UINT idTimer) PURE;
THISCALLMETHOD_(void,TxScrollWindowEx)( THIS_ INT dx, INT dy, LPCRECT lprcScroll, LPCRECT lprcClip, HRGN hRgnUpdate, LPRECT lprcUpdate, UINT fuScroll) PURE;
THISCALLMETHOD_(void,TxSetCapture)( THIS_ BOOL fCapture) PURE;
THISCALLMETHOD_(void,TxSetFocus)( THIS ) PURE;
THISCALLMETHOD_(void,TxSetCursor)( THIS_ HCURSOR hcur, BOOL fText) PURE;
THISCALLMETHOD_(BOOL,TxScreenToClient)( THIS_ LPPOINT lppt) PURE;
THISCALLMETHOD_(BOOL,TxClientToScreen)( THIS_ LPPOINT lppt) PURE;
THISCALLMETHOD_(HRESULT,TxActivate)( THIS_ LONG* plOldState) PURE;
THISCALLMETHOD_(HRESULT,TxDeactivate)( THIS_ LONG lNewState) PURE;
THISCALLMETHOD_(HRESULT,TxGetClientRect)( THIS_ LPRECT prc) PURE;
THISCALLMETHOD_(HRESULT,TxGetViewInset)( THIS_ LPRECT prc) PURE;
THISCALLMETHOD_(HRESULT,TxGetCharFormat)( THIS_ const CHARFORMATW** ppCF) PURE;
THISCALLMETHOD_(HRESULT,TxGetParaFormat)( THIS_ const PARAFORMAT** ppPF) PURE;
THISCALLMETHOD_(COLORREF,TxGetSysColor)( THIS_ int nIndex) PURE;
THISCALLMETHOD_(HRESULT,TxGetBackStyle)( THIS_ TXTBACKSTYLE* pStyle) PURE;
THISCALLMETHOD_(HRESULT,TxGetMaxLength)( THIS_ DWORD* plength) PURE;
THISCALLMETHOD_(HRESULT,TxGetScrollBars)( THIS_ DWORD* pdwScrollBar) PURE;
THISCALLMETHOD_(HRESULT,TxGetPasswordChar)( THIS_ WCHAR* pch) PURE;
THISCALLMETHOD_(HRESULT,TxGetAcceleratorPos)( THIS_ LONG* pch) PURE;
THISCALLMETHOD_(HRESULT,TxGetExtent)( THIS_ LPSIZEL lpExtent) PURE;
THISCALLMETHOD_(HRESULT,OnTxCharFormatChange)( THIS_ const CHARFORMATW* pcf) PURE;
THISCALLMETHOD_(HRESULT,OnTxParaFormatChange)( THIS_ const PARAFORMAT* ppf) PURE;
THISCALLMETHOD_(HRESULT,TxGetPropertyBits)( THIS_ DWORD dwMask, DWORD* pdwBits) PURE;
THISCALLMETHOD_(HRESULT,TxNotify)( THIS_ DWORD iNotify, void* pv) PURE;
THISCALLMETHOD_(HIMC,TxImmGetContext)( THIS ) PURE;
THISCALLMETHOD_(void,TxImmReleaseContext)( THIS_ HIMC himc) PURE;
THISCALLMETHOD_(HRESULT,TxGetSelectionBarWidth)( THIS_ LONG* lSelBarWidth) PURE;
};#undef INTERFACE
#ifdef COBJMACROS/*** IUnknown methods ***/#define ITextHost_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)#define ITextHost_AddRef(p) (p)->lpVtbl->AddRef(p)#define ITextHost_Release(p) (p)->lpVtbl->Release(p)#endif
/***************************************************************************** * ITextHost2 interface */#define INTERFACE ITextHost2DECLARE_INTERFACE_(ITextHost2,ITextHost){ /*** IUnknown methods ***/ STDMETHOD(QueryInterface)( THIS_ REFIID riid, void** ppvObject ) PURE; STDMETHOD_(ULONG,AddRef)( THIS ) PURE; STDMETHOD_(ULONG,Release)( THIS ) PURE; /*** ITextHost methods ***/ THISCALLMETHOD_(HDC,TxGetDC)( THIS ) PURE; THISCALLMETHOD_(INT,TxReleaseDC)( THIS_ HDC hdc ) PURE; THISCALLMETHOD_(BOOL,TxShowScrollBar)( THIS_ INT fnBar, BOOL fShow ) PURE; THISCALLMETHOD_(BOOL,TxEnableScrollBar)( THIS_ INT fuSBFlags, INT fuArrowflags ) PURE; THISCALLMETHOD_(BOOL,TxSetScrollRange)( THIS_ INT fnBar, LONG nMinPos, INT nMaxPos, BOOL fRedraw ) PURE; THISCALLMETHOD_(BOOL,TxSetScrollPos)( THIS_ INT fnBar, INT nPos, BOOL fRedraw ) PURE; THISCALLMETHOD_(void,TxInvalidateRect)( THIS_ LPCRECT prc, BOOL fMode ) PURE; THISCALLMETHOD_(void,TxViewChange)( THIS_ BOOL fUpdate ) PURE; THISCALLMETHOD_(BOOL,TxCreateCaret)( THIS_ HBITMAP hbmp, INT xWidth, INT yHeight ) PURE; THISCALLMETHOD_(BOOL,TxShowCaret)( THIS_ BOOL fShow ) PURE; THISCALLMETHOD_(BOOL,TxSetCaretPos)( THIS_ INT x, INT y ) PURE; THISCALLMETHOD_(BOOL,TxSetTimer)( THIS_ UINT idTimer, UINT uTimeout ) PURE; THISCALLMETHOD_(void,TxKillTimer)( THIS_ UINT idTimer ) PURE; THISCALLMETHOD_(void,TxScrollWindowEx)( THIS_ INT dx, INT dy, LPCRECT lprcScroll, LPCRECT lprcClip, HRGN hRgnUpdate, LPRECT lprcUpdate, UINT fuScroll ) PURE; THISCALLMETHOD_(void,TxSetCapture)( THIS_ BOOL fCapture ) PURE; THISCALLMETHOD_(void,TxSetFocus)( THIS ) PURE; THISCALLMETHOD_(void,TxSetCursor)( THIS_ HCURSOR hcur, BOOL fText ) PURE; THISCALLMETHOD_(BOOL,TxScreenToClient)( THIS_ LPPOINT lppt ) PURE; THISCALLMETHOD_(BOOL,TxClientToScreen)( THIS_ LPPOINT lppt ) PURE; THISCALLMETHOD_(HRESULT,TxActivate)( THIS_ LONG* plOldState ) PURE; THISCALLMETHOD_(HRESULT,TxDeactivate)( THIS_ LONG lNewState ) PURE; THISCALLMETHOD_(HRESULT,TxGetClientRect)( THIS_ LPRECT prc ) PURE; THISCALLMETHOD_(HRESULT,TxGetViewInset)( THIS_ LPRECT prc ) PURE; THISCALLMETHOD_(HRESULT,TxGetCharFormat)( THIS_ const CHARFORMATW** ppCF ) PURE; THISCALLMETHOD_(HRESULT,TxGetParaFormat)( THIS_ const PARAFORMAT** ppPF ) PURE; THISCALLMETHOD_(COLORREF,TxGetSysColor)( THIS_ int nIndex ) PURE; THISCALLMETHOD_(HRESULT,TxGetBackStyle)( THIS_ TXTBACKSTYLE* pStyle ) PURE; THISCALLMETHOD_(HRESULT,TxGetMaxLength)( THIS_ DWORD* plength ) PURE; THISCALLMETHOD_(HRESULT,TxGetScrollBars)( THIS_ DWORD* pdwScrollBar ) PURE; THISCALLMETHOD_(HRESULT,TxGetPasswordChar)( THIS_ WCHAR* pch ) PURE; THISCALLMETHOD_(HRESULT,TxGetAcceleratorPos)( THIS_ LONG* pch ) PURE; THISCALLMETHOD_(HRESULT,TxGetExtent)( THIS_ LPSIZEL lpExtent ) PURE; THISCALLMETHOD_(HRESULT,OnTxCharFormatChange)( THIS_ const CHARFORMATW* pcf ) PURE; THISCALLMETHOD_(HRESULT,OnTxParaFormatChange)( THIS_ const PARAFORMAT* ppf ) PURE; THISCALLMETHOD_(HRESULT,TxGetPropertyBits)( THIS_ DWORD dwMask, DWORD* pdwBits ) PURE; THISCALLMETHOD_(HRESULT,TxNotify)( THIS_ DWORD iNotify, void* pv ) PURE; THISCALLMETHOD_(HIMC,TxImmGetContext)( THIS ) PURE; THISCALLMETHOD_(void,TxImmReleaseContext)( THIS_ HIMC himc ) PURE; THISCALLMETHOD_(HRESULT,TxGetSelectionBarWidth)( THIS_ LONG* lSelBarWidth ) PURE; /* ITextHost2 methods */ THISCALLMETHOD_(BOOL,TxIsDoubleClickPending)( THIS ) PURE; THISCALLMETHOD_(HRESULT,TxGetWindow)( THIS_ HWND *hwnd ) PURE; THISCALLMETHOD_(HRESULT,TxSetForegroundWindow)( THIS ) PURE; THISCALLMETHOD_(HPALETTE,TxGetPalette)( THIS ) PURE; THISCALLMETHOD_(HRESULT,TxGetEastAsianFlags)( THIS_ LONG *flags ) PURE; THISCALLMETHOD_(HCURSOR,TxSetCursor2)( THIS_ HCURSOR cursor, BOOL text ) PURE; THISCALLMETHOD_(void,TxFreeTextServicesNotification)( THIS ) PURE; THISCALLMETHOD_(HRESULT,TxGetEditStyle)( THIS_ DWORD item, DWORD *data ) PURE; THISCALLMETHOD_(HRESULT,TxGetWindowStyles)( THIS_ DWORD *style, DWORD *ex_style ) PURE; THISCALLMETHOD_(HRESULT,TxShowDropCaret)( THIS_ BOOL show, HDC hdc, const RECT *rect ) PURE; THISCALLMETHOD_(HRESULT,TxDestroyCaret)( THIS ) PURE; THISCALLMETHOD_(HRESULT,TxGetHorzExtent)( THIS_ LONG *horz_extent ) PURE;};#undef INTERFACE
#ifdef COBJMACROS/*** IUnknown methods ***/#define ITextHost2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)#define ITextHost2_AddRef(p) (p)->lpVtbl->AddRef(p)#define ITextHost2_Release(p) (p)->lpVtbl->Release(p)#endif
HRESULT WINAPI CreateTextServices(IUnknown*,ITextHost*,IUnknown**);
typedef HRESULT (WINAPI *PCreateTextServices)(IUnknown*,ITextHost*,IUnknown**);
#ifdef __cplusplus}#endif
#endif /* _TEXTSERV_H */