2 * Copyright (C) 2005 Mike McCormack
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 DEFINE_GUID(IID_ITextServices
,0x8d33f740,0xcf58,0x11ce,0xa8,0x9d,0x00,0xaa,0x00,0x6c,0xad,0xc5);
27 DEFINE_GUID(IID_ITextHost
, 0xc5bdd8d0,0xd26e,0x11ce,0xa8,0x9e,0x00,0xaa,0x00,0x6c,0xad,0xc5);
28 DEFINE_GUID(IID_ITextHost2
, 0xc5bdd8d0,0xd26e,0x11ce,0xa8,0x9e,0x00,0xaa,0x00,0x6c,0xad,0xc5);
30 /*****************************************************************************
31 * ITextServices interface
33 typedef struct ITextServices ITextServices
;
35 #define INTERFACE ITextServices
36 DECLARE_INTERFACE_(ITextServices
,IUnknown
)
38 /*** IUnknown methods ***/
39 STDMETHOD(QueryInterface
)(THIS_
41 void** ppvObject
) PURE
;
43 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
45 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
47 /*** ITextServices methods ***/
49 STDMETHOD(TxSendMessage
)( THIS_
50 UINT msg
, WPARAM wparam
, LPARAM lparam
, LRESULT
* plresult
) PURE
;
52 STDMETHOD(TxDraw
)( THIS_
62 BOOL (CALLBACK
* pfnContinue
)(DWORD
),
66 STDMETHOD(TxGetHScroll
)( THIS_
71 BOOL
* pfEnabled
) PURE
;
73 STDMETHOD(TxGetVScroll
)( THIS_
78 BOOL
* pfEnabled
) PURE
;
80 STDMETHOD(OnTxSetCursor
)( THIS_
91 STDMETHOD(TxQueryHitPoint
)( THIS_
101 DWORD
* pHitResult
) PURE
;
103 STDMETHOD(OnTxInplaceActivate
)( THIS_
104 LPCRECT prcClient
) PURE
;
106 STDMETHOD(OnTxUIActivate
)( THIS
) PURE
;
108 STDMETHOD(OnTxUIDeactivate
)( THIS
) PURE
;
110 STDMETHOD(TxGetText
)( THIS_
111 BSTR
* pbstrText
) PURE
;
113 STDMETHOD(TxSetText
)( THIS_
114 LPCWSTR pszText
) PURE
;
116 STDMETHOD(TxGetCurrentTargetX
)( THIS_
119 STDMETHOD(TxGetBaseLinePos
)( THIS_
122 STDMETHOD(TxGetNaturalSize
)( THIS_
128 const SIZEL
* psizelExtent
,
132 STDMETHOD(TxGetDropTarget
)( THIS_
133 IDropTarget
** ppDropTarget
) PURE
;
135 STDMETHOD(OnTxPropertyBitsChange
)( THIS_
139 STDMETHOD(TxGetCachedSize
)( THIS_
141 DWORD
* pdwHeight
) PURE
;
146 /*** IUnknown methods ***/
147 #define ITextServices_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
148 #define ITextServices_AddRef(p) (p)->lpVtbl->AddRef(p)
149 #define ITextServices_Release(p) (p)->lpVtbl->Release(p)
150 /*** ITextServices methods ***/
151 #define ITextServices_TxSendMessage(p,a,b,c,d) (p)->lpVtbl->TxSendMessage(p,a,b,c,d)
152 #define ITextServices_TxDraw(p,a,b,c,d,e,f,g,h,i,j,k,l) (p)->lpVtbl->TxDraw(p,a,b,c,d,e,f,g,h,i,j,k,l)
153 #define ITextServices_TxGetHScroll(p,a,b,c,d,e) (p)->lpVtbl->TxGetHScroll(p,a,b,c,d,e)
154 #define ITextServices_TxGetVScroll(p,a,b,c,d,e) (p)->lpVtbl->TxGetVScroll(p,a,b,c,d,e)
155 #define ITextServices_OnTxSetCursor(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->OnTxSetCursor(p,a,b,c,d,e,f,g,h,i)
156 #define ITextServices_TxQueryHitPoint(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->TxQueryHitPoint(p,a,b,c,d,e,f,g,h,i,j)
157 #define ITextServices_OnTxInplaceActivate(p,a) (p)->lpVtbl->OnTxInplaceActivate(p,a)
158 #define ITextServices_OnTxUIActivate(p) (p)->lpVtbl->OnTxUIActivate(p)
159 #define ITextServices_OnTxUIDeactivate(p) (p)->lpVtbl->OnTxUIDeactivate(p)
160 #define ITextServices_TxGetText(p,a) (p)->lpVtbl->TxGetText(p,a)
161 #define ITextServices_TxSetText(p,a) (p)->lpVtbl->TxSetText(p,a)
162 #define ITextServices_TxGetCurrentTargetX(p,a) (p)->lpVtbl->TxGetCurrentTargetX(p,a)
163 #define ITextServices_TxGetBaseLinePos(p,a) (p)->lpVtbl->TxGetBaseLinePos(p,a)
164 #define ITextServices_TxGetNaturalSize(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->TxGetNaturalSize(p,a,b,c,d,e,f,g,h)
165 #define ITextServices_TxGetDropTarget(p,a) (p)->lpVtbl->TxGetDropTarget(p,a)
166 #define ITextServices_OnTxPropertyBitsChange(p,a,b) (p)->lpVtbl->OnTxPropertyBitsChange(p,a,b)
167 #define ITextServices_TxGetCachedSize(p,a,b) (p)->lpVtbl->TxGetCachedSize(p,a,b)
172 typedef enum _TXTBACKSTYLE
{
173 TXTBACK_TRANSPARENT
= 0,
178 TXTHITRESULT_NOHIT
= 0,
179 TXTHITRESULT_TRANSPARENT
= 1,
180 TXTHITRESULT_CLOSE
= 2,
184 enum TXTNATURALSIZE
{
185 TXTNS_FITTOCONTENT
= 1,
186 TXTNS_ROUNDTOLINE
= 2
194 typedef struct ITextHost ITextHost
;
196 /*****************************************************************************
197 * ITextHost interface
199 #define INTERFACE ITextHost
200 DECLARE_INTERFACE_(ITextHost
,IUnknown
)
202 /*** IUnknown methods ***/
203 STDMETHOD(QueryInterface
)(THIS_
205 void** ppvObject
) PURE
;
207 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
209 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
211 /*** ITextHost methods ***/
212 STDMETHOD_(HDC
,TxGetDC
)( THIS
215 STDMETHOD_(INT
,TxReleaseDC
)( THIS_
218 STDMETHOD_(BOOL
,TxShowScrollBar
)( THIS_
222 STDMETHOD_(BOOL
,TxEnableScrollBar
)( THIS_
224 INT fuArrowflags
) PURE
;
226 STDMETHOD_(BOOL
,TxSetScrollRange
)( THIS_
232 STDMETHOD_(BOOL
,TxSetScrollPos
)( THIS_
237 STDMETHOD_(void,TxInvalidateRect
)( THIS_
241 STDMETHOD_(void,TxViewChange
)( THIS_
244 STDMETHOD_(BOOL
,TxCreateCaret
)( THIS_
249 STDMETHOD_(BOOL
,TxShowCaret
)( THIS_
252 STDMETHOD_(BOOL
,TxSetCarentPos
)( THIS_
256 STDMETHOD_(BOOL
,TxSetTimer
)( THIS_
260 STDMETHOD_(void,TxKillTimer
)( THIS_
263 STDMETHOD_(void,TxScrollWindowEx
)( THIS_
272 STDMETHOD_(void,TxSetCapture
)( THIS_
275 STDMETHOD_(void,TxSetFocus
)( THIS
278 STDMETHOD_(void,TxSetCursor
)( THIS_
282 STDMETHOD_(BOOL
,TxScreenToClient
)( THIS_
285 STDMETHOD_(BOOL
,TxClientToScreen
)( THIS_
288 STDMETHOD(TxActivate
)( THIS_
289 LONG
* plOldState
) PURE
;
291 STDMETHOD(TxDeactivate
)( THIS_
292 LONG lNewState
) PURE
;
294 STDMETHOD(TxGetClientRect
)( THIS_
297 STDMETHOD(TxGetViewInset
)( THIS_
300 STDMETHOD(TxGetCharFormat
)( THIS_
301 const CHARFORMATW
** ppCF
) PURE
;
303 STDMETHOD(TxGetParaFormat
)( THIS_
304 const PARAFORMAT
** ppPF
) PURE
;
306 STDMETHOD_(COLORREF
,TxGetSysColor
)( THIS_
309 STDMETHOD(TxGetBackStyle
)( THIS_
310 TXTBACKSTYLE
* pStyle
) PURE
;
312 STDMETHOD(TxGetMaxLength
)( THIS_
313 DWORD
* plength
) PURE
;
315 STDMETHOD(TxGetScrollbars
)( THIS_
316 DWORD
* pdwScrollBar
) PURE
;
318 STDMETHOD(TxGetPasswordChar
)( THIS_
321 STDMETHOD(TxGetAcceleratorPos
)( THIS_
324 STDMETHOD(TxGetExtent
)( THIS_
325 LPSIZEL lpExtent
) PURE
;
327 STDMETHOD(OnTxCharFormatChange
)( THIS_
328 const CHARFORMATW
* pcf
) PURE
;
330 STDMETHOD(OnTxParaFormatChange
)( THIS_
331 const PARAFORMAT
* ppf
) PURE
;
333 STDMETHOD(TxGetPropertyBits
)( THIS_
335 DWORD
* pdwBits
) PURE
;
337 STDMETHOD(TxNotify
)( THIS_
341 STDMETHOD_(HIMC
,TxImmGetContext
)( THIS
344 STDMETHOD_(void,TxImmReleaseContext
)( THIS_
347 STDMETHOD(TxGetSelectionBarWidth
)( THIS_
348 LONG
* lSelBarWidth
) PURE
;
353 /*** IUnknown methods ***/
354 #define ITextHost_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
355 #define ITextHost_AddRef(p) (p)->lpVtbl->AddRef(p)
356 #define ITextHost_Release(p) (p)->lpVtbl->Release(p)
357 /*** ITextHost methods ***/
358 #define ITextHost_TxGetDC(p) (p)->lpVtbl->TxGetDC(p)
359 #define ITextHost_TxReleaseDC(p,a) (p)->lpVtbl->TxReleaseDC(p,a)
360 #define ITextHost_TxShowScrollBar(p,a,b) (p)->lpVtbl->TxShowScrollBar(p,a,b)
361 #define ITextHost_TxEnableScrollBar(p,a,b) (p)->lpVtbl->TxEnableScrollBar(p,a,b)
362 #define ITextHost_TxSetScrollRange(p,a,b,c,d) (p)->lpVtbl->TxSetScrollRange(p,a,b,c,d)
363 #define ITextHost_TxSetScrollPos(p,a,b,c) (p)->lpVtbl->TxSetScrollPos(p,a,b,c)
364 #define ITextHost_TxInvalidateRect(p,a,b) (p)->lpVtbl->TxInvalidateRect(p,a,b)
365 #define ITextHost_TxViewChange(p,a) (p)->lpVtbl->TxViewChange(p,a)
366 #define ITextHost_TxCreateCaret(p,a,b,c) (p)->lpVtbl->TxCreateCaret(p,a,b,c)
367 #define ITextHost_TxShowCaret(p,a) (p)->lpVtbl->TxShowCaret(p,a)
368 #define ITextHost_TxSetCarentPos(p,a,b) (p)->lpVtbl->TxSetCarentPos(p,a,b)
369 #define ITextHost_TxSetTimer(p,a,b) (p)->lpVtbl->TxSetTimer(p,a,b)
370 #define ITextHost_TxKillTimer(p,a) (p)->lpVtbl->TxKillTimer(p,a)
371 #define ITextHost_TxScrollWindowEx(p,a,b,c,d,e,f,g) (p)->lpVtbl->TxScrollWindowEx(p,a,b,c,d,e,f,g)
372 #define ITextHost_TxSetCapture(p,a) (p)->lpVtbl->TxSetCapture(p,a)
373 #define ITextHost_TxSetFocus(p) (p)->lpVtbl->TxSetFocus(p)
374 #define ITextHost_TxSetCursor(p,a,b) (p)->lpVtbl->TxSetCursor(p,a,b)
375 #define ITextHost_TxScreenToClient(p,a) (p)->lpVtbl->TxScreenToClient(p,a)
376 #define ITextHost_TxClientToScreen(p,a) (p)->lpVtbl->TxClientToScreen(p,a)
377 #define ITextHost_TxActivate(p,a) (p)->lpVtbl->TxActivate(p,a)
378 #define ITextHost_TxDeactivate(p,a) (p)->lpVtbl->TxDeactivate(p,a)
379 #define ITextHost_TxGetClientRect(p,a) (p)->lpVtbl->TxGetClientRect(p,a)
380 #define ITextHost_TxGetViewInset(p,a) (p)->lpVtbl->TxGetViewInset(p,a)
381 #define ITextHost_TxGetCharFormat(p,a) (p)->lpVtbl->TxGetCharFormat(p,a)
382 #define ITextHost_TxGetParaFormat(p,a) (p)->lpVtbl->TxGetParaFormat(p,a)
383 #define ITextHost_TxGetSysColor(p,a) (p)->lpVtbl->TxGetSysColor(p,a)
384 #define ITextHost_TxGetBackStyle(p,a) (p)->lpVtbl->TxGetBackStyle(p,a)
385 #define ITextHost_TxGetMaxLength(p,a) (p)->lpVtbl->TxGetMaxLength(p,a)
386 #define ITextHost_TxGetScrollbars(p,a) (p)->lpVtbl->TxGetScrollbars(p,a)
387 #define ITextHost_TxGetPasswordChar(p,a) (p)->lpVtbl->TxGetPasswordChar(p,a)
388 #define ITextHost_TxGetAcceleratorPos(p,a) (p)->lpVtbl->TxGetAcceleratorPos(p,a)
389 #define ITextHost_TxGetExtent(p,a) (p)->lpVtbl->TxGetExtent(p,a)
390 #define ITextHost_OnTxCharFormatChange(p,a) (p)->lpVtbl->OnTxCharFormatChange(p,a)
391 #define ITextHost_OnTxParaFormatChange(p,a) (p)->lpVtbl->OnTxParaFormatChange(p,a)
392 #define ITextHost_TxGetPropertyBits(p,a,b) (p)->lpVtbl->TxGetPropertyBits(p,a,b)
393 #define ITextHost_TxNotify(p,a,b) (p)->lpVtbl->TxNotify(p,a,b)
394 #define ITextHost_TxImmGetContext(p) (p)->lpVtbl->TxImmGetContext(p)
395 #define ITextHost_TxImmReleaseContext(p,a) (p)->lpVtbl->TxImmReleaseContext(p,a)
396 #define ITextHost_TxGetSelectionBarWidth(p,a) (p)->lpVtbl->TxGetSelectionBarWidth(p,a)
405 #endif /* _TEXTSERV_H */