/* * 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 __cplusplus extern "C" { #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; /***************************************************************************** * ITextServices interface */ #define INTERFACE ITextServices DECLARE_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 ITextHost DECLARE_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 HRESULT WINAPI CreateTextServices(IUnknown*,ITextHost*,IUnknown**); typedef HRESULT (WINAPI *PCreateTextServices)(IUnknown*,ITextHost*,IUnknown**); #ifdef __cplusplus } #endif #endif /* _TEXTSERV_H */