376 lines
9.8 KiB
C
376 lines
9.8 KiB
C
/*
|
|
* 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 */
|