Reactos
at master 454 lines 15 kB view raw
1/* 2 * Copyright (C) 2005 Mike McCormack 3 * 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. 8 * 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. 13 * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#ifndef _TEXTSERV_H 20#define _TEXTSERV_H 21 22#ifdef __cplusplus 23extern "C" { 24#endif 25 26#ifdef __REACTOS__ 27#include <wine/asm.h> 28#endif 29 30#ifdef __cplusplus 31#define THISCALLMETHOD_(type,method) virtual type __thiscall method 32#else 33#define THISCALLMETHOD_(type,method) type (__thiscall *method) 34#endif 35 36EXTERN_C const IID IID_ITextServices; 37EXTERN_C const IID IID_ITextHost; 38EXTERN_C const IID IID_ITextHost2; 39 40/***************************************************************************** 41 * ITextServices interface 42 */ 43#define INTERFACE ITextServices 44DECLARE_INTERFACE_(ITextServices,IUnknown) 45{ 46 /*** IUnknown methods ***/ 47 STDMETHOD(QueryInterface)(THIS_ 48 REFIID riid, 49 void** ppvObject) PURE; 50 51 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 52 53 STDMETHOD_(ULONG,Release)(THIS) PURE; 54 55 /*** ITextServices methods ***/ 56 57 THISCALLMETHOD_(HRESULT,TxSendMessage)( THIS_ 58 UINT msg, WPARAM wparam, LPARAM lparam, LRESULT* plresult) PURE; 59 60 THISCALLMETHOD_(HRESULT,TxDraw)( THIS_ 61 DWORD dwDrawAspect, 62 LONG lindex, 63 void* pvAspect, 64 DVTARGETDEVICE* ptd, 65 HDC hdcDraw, 66 HDC hicTargetDev, 67 LPCRECTL lprcBounds, 68 LPCRECTL lprcWBounds, 69 LPRECT lprcUpdate, 70 BOOL (CALLBACK * pfnContinue)(DWORD), 71 DWORD dwContinue, 72 LONG lViewId) PURE; 73 74 THISCALLMETHOD_(HRESULT,TxGetHScroll)( THIS_ 75 LONG* plMin, 76 LONG* plMax, 77 LONG* plPos, 78 LONG* plPage, 79 BOOL* pfEnabled) PURE; 80 81 THISCALLMETHOD_(HRESULT,TxGetVScroll)( THIS_ 82 LONG* plMin, 83 LONG* plMax, 84 LONG* plPos, 85 LONG* plPage, 86 BOOL* pfEnabled) PURE; 87 88 THISCALLMETHOD_(HRESULT,OnTxSetCursor)( THIS_ 89 DWORD dwDrawAspect, 90 LONG lindex, 91 void* pvAspect, 92 DVTARGETDEVICE* ptd, 93 HDC hdcDraw, 94 HDC hicTargetDev, 95 LPCRECT lprcClient, 96 INT x, 97 INT y) PURE; 98 99 THISCALLMETHOD_(HRESULT,TxQueryHitPoint)( THIS_ 100 DWORD dwDrawAspect, 101 LONG lindex, 102 void* pvAspect, 103 DVTARGETDEVICE* ptd, 104 HDC hdcDraw, 105 HDC hicTargetDev, 106 LPCRECT lprcClient, 107 INT x, 108 INT y, 109 DWORD* pHitResult) PURE; 110 111 THISCALLMETHOD_(HRESULT,OnTxInPlaceActivate)( THIS_ 112 LPCRECT prcClient) PURE; 113 114 THISCALLMETHOD_(HRESULT,OnTxInPlaceDeactivate)( THIS ) PURE; 115 116 THISCALLMETHOD_(HRESULT,OnTxUIActivate)( THIS ) PURE; 117 118 THISCALLMETHOD_(HRESULT,OnTxUIDeactivate)( THIS ) PURE; 119 120 THISCALLMETHOD_(HRESULT,TxGetText)( THIS_ 121 BSTR* pbstrText) PURE; 122 123 THISCALLMETHOD_(HRESULT,TxSetText)( THIS_ 124 LPCWSTR pszText) PURE; 125 126 THISCALLMETHOD_(HRESULT,TxGetCurTargetX)( THIS_ 127 LONG* x) PURE; 128 129 THISCALLMETHOD_(HRESULT,TxGetBaseLinePos)( THIS_ 130 LONG* x) PURE; 131 132 THISCALLMETHOD_(HRESULT,TxGetNaturalSize)( THIS_ 133 DWORD dwAspect, 134 HDC hdcDraw, 135 HDC hicTargetDev, 136 DVTARGETDEVICE* ptd, 137 DWORD dwMode, 138 const SIZEL* psizelExtent, 139 LONG* pwidth, 140 LONG* pheight) PURE; 141 142 THISCALLMETHOD_(HRESULT,TxGetDropTarget)( THIS_ 143 IDropTarget** ppDropTarget) PURE; 144 145 THISCALLMETHOD_(HRESULT,OnTxPropertyBitsChange)( THIS_ 146 DWORD dwMask, 147 DWORD dwBits) PURE; 148 149 THISCALLMETHOD_(HRESULT,TxGetCachedSize)( THIS_ 150 DWORD* pdwWidth, 151 DWORD* pdwHeight) PURE; 152 153}; 154#undef INTERFACE 155 156#ifdef COBJMACROS 157/*** IUnknown methods ***/ 158#define ITextServices_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 159#define ITextServices_AddRef(p) (p)->lpVtbl->AddRef(p) 160#define ITextServices_Release(p) (p)->lpVtbl->Release(p) 161#endif 162 163typedef enum _TXTBACKSTYLE { 164 TXTBACK_TRANSPARENT = 0, 165 TXTBACK_OPAQUE 166} TXTBACKSTYLE; 167 168enum TXTHITRESULT { 169 TXTHITRESULT_NOHIT = 0, 170 TXTHITRESULT_TRANSPARENT = 1, 171 TXTHITRESULT_CLOSE = 2, 172 TXTHITRESULT_HIT = 3 173}; 174 175enum TXTNATURALSIZE { 176 TXTNS_FITTOCONTENT = 1, 177 TXTNS_ROUNDTOLINE = 2 178}; 179 180enum TXTVIEW { 181 TXTVIEW_ACTIVE = 0, 182 TXTVIEW_INACTIVE = -1 183}; 184 185#define TXTBIT_RICHTEXT 0x000001 186#define TXTBIT_MULTILINE 0x000002 187#define TXTBIT_READONLY 0x000004 188#define TXTBIT_SHOWACCELERATOR 0x000008 189#define TXTBIT_USEPASSWORD 0x000010 190#define TXTBIT_HIDESELECTION 0x000020 191#define TXTBIT_SAVESELECTION 0x000040 192#define TXTBIT_AUTOWORDSEL 0x000080 193#define TXTBIT_VERTICAL 0x000100 194#define TXTBIT_SELBARCHANGE 0x000200 195#define TXTBIT_WORDWRAP 0x000400 196#define TXTBIT_ALLOWBEEP 0x000800 197#define TXTBIT_DISABLEDRAG 0x001000 198#define TXTBIT_VIEWINSETCHANGE 0x002000 199#define TXTBIT_BACKSTYLECHANGE 0x004000 200#define TXTBIT_MAXLENGTHCHANGE 0x008000 201#define TXTBIT_SCROLLBARCHANGE 0x010000 202#define TXTBIT_CHARFORMATCHANGE 0x020000 203#define TXTBIT_PARAFORMATCHANGE 0x040000 204#define TXTBIT_EXTENTCHANGE 0x080000 205#define TXTBIT_CLIENTRECTCHANGE 0x100000 206#define TXTBIT_USECURRENTBKG 0x200000 207 208/***************************************************************************** 209 * ITextHost interface 210 */ 211#define INTERFACE ITextHost 212DECLARE_INTERFACE_(ITextHost,IUnknown) 213{ 214 /*** IUnknown methods ***/ 215 STDMETHOD(QueryInterface)(THIS_ 216 REFIID riid, 217 void** ppvObject) PURE; 218 219 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 220 221 STDMETHOD_(ULONG,Release)(THIS) PURE; 222 223 /*** ITextHost methods ***/ 224 THISCALLMETHOD_(HDC,TxGetDC)( THIS 225 ) PURE; 226 227 THISCALLMETHOD_(INT,TxReleaseDC)( THIS_ 228 HDC hdc) PURE; 229 230 THISCALLMETHOD_(BOOL,TxShowScrollBar)( THIS_ 231 INT fnBar, 232 BOOL fShow) PURE; 233 234 THISCALLMETHOD_(BOOL,TxEnableScrollBar)( THIS_ 235 INT fuSBFlags, 236 INT fuArrowflags) PURE; 237 238 THISCALLMETHOD_(BOOL,TxSetScrollRange)( THIS_ 239 INT fnBar, 240 LONG nMinPos, 241 INT nMaxPos, 242 BOOL fRedraw) PURE; 243 244 THISCALLMETHOD_(BOOL,TxSetScrollPos)( THIS_ 245 INT fnBar, 246 INT nPos, 247 BOOL fRedraw) PURE; 248 249 THISCALLMETHOD_(void,TxInvalidateRect)( THIS_ 250 LPCRECT prc, 251 BOOL fMode) PURE; 252 253 THISCALLMETHOD_(void,TxViewChange)( THIS_ 254 BOOL fUpdate) PURE; 255 256 THISCALLMETHOD_(BOOL,TxCreateCaret)( THIS_ 257 HBITMAP hbmp, 258 INT xWidth, 259 INT yHeight) PURE; 260 261 THISCALLMETHOD_(BOOL,TxShowCaret)( THIS_ 262 BOOL fShow) PURE; 263 264 THISCALLMETHOD_(BOOL,TxSetCaretPos)( THIS_ 265 INT x, 266 INT y) PURE; 267 268 THISCALLMETHOD_(BOOL,TxSetTimer)( THIS_ 269 UINT idTimer, 270 UINT uTimeout) PURE; 271 272 THISCALLMETHOD_(void,TxKillTimer)( THIS_ 273 UINT idTimer) PURE; 274 275 THISCALLMETHOD_(void,TxScrollWindowEx)( THIS_ 276 INT dx, 277 INT dy, 278 LPCRECT lprcScroll, 279 LPCRECT lprcClip, 280 HRGN hRgnUpdate, 281 LPRECT lprcUpdate, 282 UINT fuScroll) PURE; 283 284 THISCALLMETHOD_(void,TxSetCapture)( THIS_ 285 BOOL fCapture) PURE; 286 287 THISCALLMETHOD_(void,TxSetFocus)( THIS 288 ) PURE; 289 290 THISCALLMETHOD_(void,TxSetCursor)( THIS_ 291 HCURSOR hcur, 292 BOOL fText) PURE; 293 294 THISCALLMETHOD_(BOOL,TxScreenToClient)( THIS_ 295 LPPOINT lppt) PURE; 296 297 THISCALLMETHOD_(BOOL,TxClientToScreen)( THIS_ 298 LPPOINT lppt) PURE; 299 300 THISCALLMETHOD_(HRESULT,TxActivate)( THIS_ 301 LONG* plOldState) PURE; 302 303 THISCALLMETHOD_(HRESULT,TxDeactivate)( THIS_ 304 LONG lNewState) PURE; 305 306 THISCALLMETHOD_(HRESULT,TxGetClientRect)( THIS_ 307 LPRECT prc) PURE; 308 309 THISCALLMETHOD_(HRESULT,TxGetViewInset)( THIS_ 310 LPRECT prc) PURE; 311 312 THISCALLMETHOD_(HRESULT,TxGetCharFormat)( THIS_ 313 const CHARFORMATW** ppCF) PURE; 314 315 THISCALLMETHOD_(HRESULT,TxGetParaFormat)( THIS_ 316 const PARAFORMAT** ppPF) PURE; 317 318 THISCALLMETHOD_(COLORREF,TxGetSysColor)( THIS_ 319 int nIndex) PURE; 320 321 THISCALLMETHOD_(HRESULT,TxGetBackStyle)( THIS_ 322 TXTBACKSTYLE* pStyle) PURE; 323 324 THISCALLMETHOD_(HRESULT,TxGetMaxLength)( THIS_ 325 DWORD* plength) PURE; 326 327 THISCALLMETHOD_(HRESULT,TxGetScrollBars)( THIS_ 328 DWORD* pdwScrollBar) PURE; 329 330 THISCALLMETHOD_(HRESULT,TxGetPasswordChar)( THIS_ 331 WCHAR* pch) PURE; 332 333 THISCALLMETHOD_(HRESULT,TxGetAcceleratorPos)( THIS_ 334 LONG* pch) PURE; 335 336 THISCALLMETHOD_(HRESULT,TxGetExtent)( THIS_ 337 LPSIZEL lpExtent) PURE; 338 339 THISCALLMETHOD_(HRESULT,OnTxCharFormatChange)( THIS_ 340 const CHARFORMATW* pcf) PURE; 341 342 THISCALLMETHOD_(HRESULT,OnTxParaFormatChange)( THIS_ 343 const PARAFORMAT* ppf) PURE; 344 345 THISCALLMETHOD_(HRESULT,TxGetPropertyBits)( THIS_ 346 DWORD dwMask, 347 DWORD* pdwBits) PURE; 348 349 THISCALLMETHOD_(HRESULT,TxNotify)( THIS_ 350 DWORD iNotify, 351 void* pv) PURE; 352 353 THISCALLMETHOD_(HIMC,TxImmGetContext)( THIS 354 ) PURE; 355 356 THISCALLMETHOD_(void,TxImmReleaseContext)( THIS_ 357 HIMC himc) PURE; 358 359 THISCALLMETHOD_(HRESULT,TxGetSelectionBarWidth)( THIS_ 360 LONG* lSelBarWidth) PURE; 361 362}; 363#undef INTERFACE 364 365#ifdef COBJMACROS 366/*** IUnknown methods ***/ 367#define ITextHost_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 368#define ITextHost_AddRef(p) (p)->lpVtbl->AddRef(p) 369#define ITextHost_Release(p) (p)->lpVtbl->Release(p) 370#endif 371 372/***************************************************************************** 373 * ITextHost2 interface 374 */ 375#define INTERFACE ITextHost2 376DECLARE_INTERFACE_(ITextHost2,ITextHost) 377{ 378 /*** IUnknown methods ***/ 379 STDMETHOD(QueryInterface)( THIS_ REFIID riid, void** ppvObject ) PURE; 380 STDMETHOD_(ULONG,AddRef)( THIS ) PURE; 381 STDMETHOD_(ULONG,Release)( THIS ) PURE; 382 /*** ITextHost methods ***/ 383 THISCALLMETHOD_(HDC,TxGetDC)( THIS ) PURE; 384 THISCALLMETHOD_(INT,TxReleaseDC)( THIS_ HDC hdc ) PURE; 385 THISCALLMETHOD_(BOOL,TxShowScrollBar)( THIS_ INT fnBar, BOOL fShow ) PURE; 386 THISCALLMETHOD_(BOOL,TxEnableScrollBar)( THIS_ INT fuSBFlags, INT fuArrowflags ) PURE; 387 THISCALLMETHOD_(BOOL,TxSetScrollRange)( THIS_ INT fnBar, LONG nMinPos, INT nMaxPos, BOOL fRedraw ) PURE; 388 THISCALLMETHOD_(BOOL,TxSetScrollPos)( THIS_ INT fnBar, INT nPos, BOOL fRedraw ) PURE; 389 THISCALLMETHOD_(void,TxInvalidateRect)( THIS_ LPCRECT prc, BOOL fMode ) PURE; 390 THISCALLMETHOD_(void,TxViewChange)( THIS_ BOOL fUpdate ) PURE; 391 THISCALLMETHOD_(BOOL,TxCreateCaret)( THIS_ HBITMAP hbmp, INT xWidth, INT yHeight ) PURE; 392 THISCALLMETHOD_(BOOL,TxShowCaret)( THIS_ BOOL fShow ) PURE; 393 THISCALLMETHOD_(BOOL,TxSetCaretPos)( THIS_ INT x, INT y ) PURE; 394 THISCALLMETHOD_(BOOL,TxSetTimer)( THIS_ UINT idTimer, UINT uTimeout ) PURE; 395 THISCALLMETHOD_(void,TxKillTimer)( THIS_ UINT idTimer ) PURE; 396 THISCALLMETHOD_(void,TxScrollWindowEx)( THIS_ INT dx, INT dy, LPCRECT lprcScroll, LPCRECT lprcClip, 397 HRGN hRgnUpdate, LPRECT lprcUpdate, UINT fuScroll ) PURE; 398 THISCALLMETHOD_(void,TxSetCapture)( THIS_ BOOL fCapture ) PURE; 399 THISCALLMETHOD_(void,TxSetFocus)( THIS ) PURE; 400 THISCALLMETHOD_(void,TxSetCursor)( THIS_ HCURSOR hcur, BOOL fText ) PURE; 401 THISCALLMETHOD_(BOOL,TxScreenToClient)( THIS_ LPPOINT lppt ) PURE; 402 THISCALLMETHOD_(BOOL,TxClientToScreen)( THIS_ LPPOINT lppt ) PURE; 403 THISCALLMETHOD_(HRESULT,TxActivate)( THIS_ LONG* plOldState ) PURE; 404 THISCALLMETHOD_(HRESULT,TxDeactivate)( THIS_ LONG lNewState ) PURE; 405 THISCALLMETHOD_(HRESULT,TxGetClientRect)( THIS_ LPRECT prc ) PURE; 406 THISCALLMETHOD_(HRESULT,TxGetViewInset)( THIS_ LPRECT prc ) PURE; 407 THISCALLMETHOD_(HRESULT,TxGetCharFormat)( THIS_ const CHARFORMATW** ppCF ) PURE; 408 THISCALLMETHOD_(HRESULT,TxGetParaFormat)( THIS_ const PARAFORMAT** ppPF ) PURE; 409 THISCALLMETHOD_(COLORREF,TxGetSysColor)( THIS_ int nIndex ) PURE; 410 THISCALLMETHOD_(HRESULT,TxGetBackStyle)( THIS_ TXTBACKSTYLE* pStyle ) PURE; 411 THISCALLMETHOD_(HRESULT,TxGetMaxLength)( THIS_ DWORD* plength ) PURE; 412 THISCALLMETHOD_(HRESULT,TxGetScrollBars)( THIS_ DWORD* pdwScrollBar ) PURE; 413 THISCALLMETHOD_(HRESULT,TxGetPasswordChar)( THIS_ WCHAR* pch ) PURE; 414 THISCALLMETHOD_(HRESULT,TxGetAcceleratorPos)( THIS_ LONG* pch ) PURE; 415 THISCALLMETHOD_(HRESULT,TxGetExtent)( THIS_ LPSIZEL lpExtent ) PURE; 416 THISCALLMETHOD_(HRESULT,OnTxCharFormatChange)( THIS_ const CHARFORMATW* pcf ) PURE; 417 THISCALLMETHOD_(HRESULT,OnTxParaFormatChange)( THIS_ const PARAFORMAT* ppf ) PURE; 418 THISCALLMETHOD_(HRESULT,TxGetPropertyBits)( THIS_ DWORD dwMask, DWORD* pdwBits ) PURE; 419 THISCALLMETHOD_(HRESULT,TxNotify)( THIS_ DWORD iNotify, void* pv ) PURE; 420 THISCALLMETHOD_(HIMC,TxImmGetContext)( THIS ) PURE; 421 THISCALLMETHOD_(void,TxImmReleaseContext)( THIS_ HIMC himc ) PURE; 422 THISCALLMETHOD_(HRESULT,TxGetSelectionBarWidth)( THIS_ LONG* lSelBarWidth ) PURE; 423 /* ITextHost2 methods */ 424 THISCALLMETHOD_(BOOL,TxIsDoubleClickPending)( THIS ) PURE; 425 THISCALLMETHOD_(HRESULT,TxGetWindow)( THIS_ HWND *hwnd ) PURE; 426 THISCALLMETHOD_(HRESULT,TxSetForegroundWindow)( THIS ) PURE; 427 THISCALLMETHOD_(HPALETTE,TxGetPalette)( THIS ) PURE; 428 THISCALLMETHOD_(HRESULT,TxGetEastAsianFlags)( THIS_ LONG *flags ) PURE; 429 THISCALLMETHOD_(HCURSOR,TxSetCursor2)( THIS_ HCURSOR cursor, BOOL text ) PURE; 430 THISCALLMETHOD_(void,TxFreeTextServicesNotification)( THIS ) PURE; 431 THISCALLMETHOD_(HRESULT,TxGetEditStyle)( THIS_ DWORD item, DWORD *data ) PURE; 432 THISCALLMETHOD_(HRESULT,TxGetWindowStyles)( THIS_ DWORD *style, DWORD *ex_style ) PURE; 433 THISCALLMETHOD_(HRESULT,TxShowDropCaret)( THIS_ BOOL show, HDC hdc, const RECT *rect ) PURE; 434 THISCALLMETHOD_(HRESULT,TxDestroyCaret)( THIS ) PURE; 435 THISCALLMETHOD_(HRESULT,TxGetHorzExtent)( THIS_ LONG *horz_extent ) PURE; 436}; 437#undef INTERFACE 438 439#ifdef COBJMACROS 440/*** IUnknown methods ***/ 441#define ITextHost2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 442#define ITextHost2_AddRef(p) (p)->lpVtbl->AddRef(p) 443#define ITextHost2_Release(p) (p)->lpVtbl->Release(p) 444#endif 445 446HRESULT WINAPI CreateTextServices(IUnknown*,ITextHost*,IUnknown**); 447 448typedef HRESULT (WINAPI *PCreateTextServices)(IUnknown*,ITextHost*,IUnknown**); 449 450#ifdef __cplusplus 451} 452#endif 453 454#endif /* _TEXTSERV_H */