ReactOS  0.4.15-dev-507-g90aff8d
txthost.c
Go to the documentation of this file.
1 /*
2  * RichEdit - ITextHost implementation for windowed richedit controls
3  *
4  * Copyright 2009 by Dylan Smith
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #define COBJMACROS
22 
23 #include "editor.h"
24 #include "ole2.h"
25 #include "richole.h"
26 #include "imm.h"
27 #include "textserv.h"
28 #include "wine/asm.h"
29 #include "wine/debug.h"
30 #include "editstr.h"
31 
33 
34 typedef struct ITextHostImpl {
35  ITextHost ITextHost_iface;
41 
42 static const ITextHostVtbl textHostVtbl;
43 
44 ITextHost *ME_CreateTextHost(HWND hwnd, CREATESTRUCTW *cs, BOOL bEmulateVersion10)
45 {
46  ITextHostImpl *texthost;
47 
48  texthost = CoTaskMemAlloc(sizeof(*texthost));
49  if (!texthost) return NULL;
50 
51  texthost->ITextHost_iface.lpVtbl = &textHostVtbl;
52  texthost->ref = 1;
53  texthost->hWnd = hwnd;
54  texthost->bEmulateVersion10 = bEmulateVersion10;
55  memset( &texthost->para_fmt, 0, sizeof(texthost->para_fmt) );
56  texthost->para_fmt.cbSize = sizeof(texthost->para_fmt);
57  texthost->para_fmt.dwMask = PFM_ALIGNMENT;
58  texthost->para_fmt.wAlignment = PFA_LEFT;
59  if (cs->style & ES_RIGHT)
60  texthost->para_fmt.wAlignment = PFA_RIGHT;
61  if (cs->style & ES_CENTER)
62  texthost->para_fmt.wAlignment = PFA_CENTER;
63 
64  return &texthost->ITextHost_iface;
65 }
66 
67 static inline ITextHostImpl *impl_from_ITextHost(ITextHost *iface)
68 {
69  return CONTAINING_RECORD(iface, ITextHostImpl, ITextHost_iface);
70 }
71 
73 {
75 
76  if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_ITextHost)) {
77  *ppvObject = &This->ITextHost_iface;
78  ITextHost_AddRef((ITextHost *)*ppvObject);
79  return S_OK;
80  }
81 
82  FIXME("Unknown interface: %s\n", debugstr_guid(riid));
83  return E_NOINTERFACE;
84 }
85 
86 static ULONG WINAPI ITextHostImpl_AddRef(ITextHost *iface)
87 {
90  return ref;
91 }
92 
93 static ULONG WINAPI ITextHostImpl_Release(ITextHost *iface)
94 {
97 
98  if (!ref)
99  {
100  SetWindowLongPtrW(This->hWnd, 0, 0);
102  }
103  return ref;
104 }
105 
107 {
109  return GetDC(This->hWnd);
110 }
111 
113 {
115  return ReleaseDC(This->hWnd, hdc);
116 }
117 
119 {
121  return ShowScrollBar(This->hWnd, fnBar, fShow);
122 }
123 
124 DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxEnableScrollBar(ITextHost *iface, INT fuSBFlags, INT fuArrowflags)
125 {
127  return EnableScrollBar(This->hWnd, fuSBFlags, fuArrowflags);
128 }
129 
130 DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetScrollRange(ITextHost *iface, INT fnBar, LONG nMinPos, INT nMaxPos,
131  BOOL fRedraw)
132 {
134  return SetScrollRange(This->hWnd, fnBar, nMinPos, nMaxPos, fRedraw);
135 }
136 
137 DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetScrollPos(ITextHost *iface, INT fnBar, INT nPos, BOOL fRedraw)
138 {
140  return SetScrollPos(This->hWnd, fnBar, nPos, fRedraw) != 0;
141 }
142 
144 {
146  InvalidateRect(This->hWnd, prc, fMode);
147 }
148 
149 DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxViewChange(ITextHost *iface, BOOL fUpdate)
150 {
152  if (fUpdate)
153  UpdateWindow(This->hWnd);
154 }
155 
157 {
159  return CreateCaret(This->hWnd, hbmp, xWidth, yHeight);
160 }
161 
163 {
165  if (fShow)
166  return ShowCaret(This->hWnd);
167  else
168  return HideCaret(This->hWnd);
169 }
170 
172  INT x, INT y)
173 {
174  return SetCaretPos(x, y);
175 }
176 
177 DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetTimer(ITextHost *iface, UINT idTimer, UINT uTimeout)
178 {
180  return SetTimer(This->hWnd, idTimer, uTimeout, NULL) != 0;
181 }
182 
183 DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxKillTimer(ITextHost *iface, UINT idTimer)
184 {
186  KillTimer(This->hWnd, idTimer);
187 }
188 
190  LPCRECT lprcClip, HRGN hRgnUpdate, LPRECT lprcUpdate,
191  UINT fuScroll)
192 {
194  ScrollWindowEx(This->hWnd, dx, dy, lprcScroll, lprcClip,
195  hRgnUpdate, lprcUpdate, fuScroll);
196 }
197 
198 DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxSetCapture(ITextHost *iface, BOOL fCapture)
199 {
201  if (fCapture)
202  SetCapture(This->hWnd);
203  else
204  ReleaseCapture();
205 }
206 
208 {
210  SetFocus(This->hWnd);
211 }
212 
214  HCURSOR hcur,
215  BOOL fText)
216 {
217  SetCursor(hcur);
218 }
219 
221 {
223  return ScreenToClient(This->hWnd, lppt);
224 }
225 
227 {
229  return ClientToScreen(This->hWnd, lppt);
230 }
231 
233 {
235  *plOldState = HandleToLong(SetActiveWindow(This->hWnd));
236  return (*plOldState ? S_OK : E_FAIL);
237 }
238 
240  LONG lNewState)
241 {
242  HWND ret = SetActiveWindow(LongToHandle(lNewState));
243  return (ret ? S_OK : E_FAIL);
244 }
245 
247 {
249  int ret = GetClientRect(This->hWnd, prc);
250  return (ret ? S_OK : E_FAIL);
251 }
252 
254  LPRECT prc)
255 {
256  prc->top = 0;
257  prc->left = 0;
258  prc->bottom = 0;
259  prc->right = 0;
260  return S_OK;
261 }
262 
264  const CHARFORMATW **ppCF)
265 {
266  return E_NOTIMPL;
267 }
268 
270  const PARAFORMAT **fmt)
271 {
273  *fmt = (const PARAFORMAT *)&This->para_fmt;
274  return S_OK;
275 }
276 
278  int nIndex)
279 {
280  return GetSysColor(nIndex);
281 }
282 
284  TXTBACKSTYLE *pStyle)
285 {
286  *pStyle = TXTBACK_OPAQUE;
287  return S_OK;
288 }
289 
291  DWORD *pLength)
292 {
293  *pLength = INFINITE;
294  return S_OK;
295 }
296 
298 {
300  ME_TextEditor *editor = (ME_TextEditor*)GetWindowLongPtrW(This->hWnd, 0);
301  const DWORD mask = WS_VSCROLL|
302  WS_HSCROLL|
306  if (editor)
307  {
308  *pdwScrollBar = editor->styleFlags & mask;
309  } else {
311  if (style & WS_VSCROLL)
313  if (!This->bEmulateVersion10 && (style & WS_HSCROLL))
315  *pdwScrollBar = style & mask;
316  }
317  return S_OK;
318 }
319 
321  WCHAR *pch)
322 {
323  *pch = '*';
324  return S_OK;
325 }
326 
328  LONG *pch)
329 {
330  *pch = -1;
331  return S_OK;
332 }
333 
335  LPSIZEL lpExtent)
336 {
337  return E_NOTIMPL;
338 }
339 
341  const CHARFORMATW *pcf)
342 {
343  return S_OK;
344 }
345 
347  const PARAFORMAT *ppf)
348 {
349  return S_OK;
350 }
351 
353 {
355  ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(This->hWnd, 0);
356  DWORD style;
357  DWORD dwBits = 0;
358 
359  if (editor)
360  {
361  style = editor->styleFlags;
362  if (editor->mode & TM_RICHTEXT)
363  dwBits |= TXTBIT_RICHTEXT;
364  if (editor->bWordWrap)
365  dwBits |= TXTBIT_WORDWRAP;
367  dwBits |= TXTBIT_AUTOWORDSEL;
368  } else {
369  DWORD dwScrollBar;
370 
372  ITextHostImpl_TxGetScrollBars(iface, &dwScrollBar);
373 
375  if (!(dwScrollBar & ES_AUTOHSCROLL))
376  dwBits |= TXTBIT_WORDWRAP;
377  }
378 
379  /* Bits that correspond to window styles. */
380  if (style & ES_MULTILINE)
381  dwBits |= TXTBIT_MULTILINE;
382  if (style & ES_READONLY)
383  dwBits |= TXTBIT_READONLY;
384  if (style & ES_PASSWORD)
385  dwBits |= TXTBIT_USEPASSWORD;
386  if (!(style & ES_NOHIDESEL))
387  dwBits |= TXTBIT_HIDESELECTION;
388  if (style & ES_SAVESEL)
389  dwBits |= TXTBIT_SAVESELECTION;
390  if (style & ES_VERTICAL)
391  dwBits |= TXTBIT_VERTICAL;
392  if (style & ES_NOOLEDRAGDROP)
393  dwBits |= TXTBIT_DISABLEDRAG;
394 
395  dwBits |= TXTBIT_ALLOWBEEP;
396 
397  /* The following bits are always FALSE because they are probably only
398  * needed for ITextServices_OnTxPropertyBitsChange:
399  * TXTBIT_VIEWINSETCHANGE
400  * TXTBIT_BACKSTYLECHANGE
401  * TXTBIT_MAXLENGTHCHANGE
402  * TXTBIT_CHARFORMATCHANGE
403  * TXTBIT_PARAFORMATCHANGE
404  * TXTBIT_SHOWACCELERATOR
405  * TXTBIT_EXTENTCHANGE
406  * TXTBIT_SELBARCHANGE
407  * TXTBIT_SCROLLBARCHANGE
408  * TXTBIT_CLIENTRECTCHANGE
409  *
410  * Documented by MSDN as not supported:
411  * TXTBIT_USECURRENTBKG
412  */
413 
414  *pdwBits = dwBits & dwMask;
415  return S_OK;
416 }
417 
418 DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxNotify(ITextHost *iface, DWORD iNotify, void *pv)
419 {
421  ME_TextEditor *editor = (ME_TextEditor*)GetWindowLongPtrW(This->hWnd, 0);
422  HWND hwnd = This->hWnd;
423  UINT id;
424 
425  if (!editor || !editor->hwndParent) return S_OK;
426 
427  id = GetWindowLongW(hwnd, GWLP_ID);
428 
429  switch (iNotify)
430  {
431  case EN_DROPFILES:
432  case EN_LINK:
433  case EN_OLEOPFAILED:
434  case EN_PROTECTED:
435  case EN_REQUESTRESIZE:
436  case EN_SAVECLIPBOARD:
437  case EN_SELCHANGE:
438  case EN_STOPNOUNDO:
439  {
440  /* FIXME: Verify this assumption that pv starts with NMHDR. */
441  NMHDR *info = pv;
442  if (!info)
443  return E_FAIL;
444 
445  info->hwndFrom = hwnd;
446  info->idFrom = id;
447  info->code = iNotify;
448  SendMessageW(editor->hwndParent, WM_NOTIFY, id, (LPARAM)info);
449  break;
450  }
451 
452  case EN_UPDATE:
453  /* Only sent when the window is visible. */
454  if (!IsWindowVisible(hwnd))
455  break;
456  /* Fall through */
457  case EN_CHANGE:
458  case EN_ERRSPACE:
459  case EN_HSCROLL:
460  case EN_KILLFOCUS:
461  case EN_MAXTEXT:
462  case EN_SETFOCUS:
463  case EN_VSCROLL:
464  SendMessageW(editor->hwndParent, WM_COMMAND, MAKEWPARAM(id, iNotify), (LPARAM)hwnd);
465  break;
466 
467  case EN_MSGFILTER:
468  FIXME("EN_MSGFILTER is documented as not being sent to TxNotify\n");
469  /* fall through */
470  default:
471  return E_FAIL;
472  }
473  return S_OK;
474 }
475 
477 {
479  return ImmGetContext(This->hWnd);
480 }
481 
483 {
485  ImmReleaseContext(This->hWnd, himc);
486 }
487 
489 {
491  ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(This->hWnd, 0);
492 
493  DWORD style = editor ? editor->styleFlags
494  : GetWindowLongW(This->hWnd, GWL_STYLE);
495  *lSelBarWidth = (style & ES_SELECTIONBAR) ? 225 : 0; /* in HIMETRIC */
496  return S_OK;
497 }
537 
538 #if defined(__i386__) && !defined(__MINGW32__) /* thiscall functions are i386-specific */
539 
540 #define STDCALL(func) (void *) __stdcall_ ## func
541 #ifdef _MSC_VER
542 #define DEFINE_STDCALL_WRAPPER(num,func,args) \
543  __declspec(naked) HRESULT __stdcall_##func(void) \
544  { \
545  __asm pop eax \
546  __asm pop ecx \
547  __asm push eax \
548  __asm mov eax, [ecx] \
549  __asm jmp dword ptr [eax + 4*num] \
550  }
551 #else /* _MSC_VER */
552 #define DEFINE_STDCALL_WRAPPER(num,func,args) \
553  extern HRESULT __stdcall_ ## func(void); \
554  __ASM_GLOBAL_FUNC(__stdcall_ ## func, \
555  "popl %eax\n\t" \
556  "popl %ecx\n\t" \
557  "pushl %eax\n\t" \
558  "movl (%ecx), %eax\n\t" \
559  "jmp *(4*(" #num "))(%eax)" )
560 #endif /* _MSC_VER */
561 
562 DEFINE_STDCALL_WRAPPER(3,ITextHostImpl_TxGetDC,4)
563 DEFINE_STDCALL_WRAPPER(4,ITextHostImpl_TxReleaseDC,8)
564 DEFINE_STDCALL_WRAPPER(5,ITextHostImpl_TxShowScrollBar,12)
565 DEFINE_STDCALL_WRAPPER(6,ITextHostImpl_TxEnableScrollBar,12)
566 DEFINE_STDCALL_WRAPPER(7,ITextHostImpl_TxSetScrollRange,20)
567 DEFINE_STDCALL_WRAPPER(8,ITextHostImpl_TxSetScrollPos,16)
568 DEFINE_STDCALL_WRAPPER(9,ITextHostImpl_TxInvalidateRect,12)
569 DEFINE_STDCALL_WRAPPER(10,ITextHostImpl_TxViewChange,8)
570 DEFINE_STDCALL_WRAPPER(11,ITextHostImpl_TxCreateCaret,16)
571 DEFINE_STDCALL_WRAPPER(12,ITextHostImpl_TxShowCaret,8)
572 DEFINE_STDCALL_WRAPPER(13,ITextHostImpl_TxSetCaretPos,12)
573 DEFINE_STDCALL_WRAPPER(14,ITextHostImpl_TxSetTimer,12)
574 DEFINE_STDCALL_WRAPPER(15,ITextHostImpl_TxKillTimer,8)
575 DEFINE_STDCALL_WRAPPER(16,ITextHostImpl_TxScrollWindowEx,32)
576 DEFINE_STDCALL_WRAPPER(17,ITextHostImpl_TxSetCapture,8)
577 DEFINE_STDCALL_WRAPPER(18,ITextHostImpl_TxSetFocus,4)
578 DEFINE_STDCALL_WRAPPER(19,ITextHostImpl_TxSetCursor,12)
579 DEFINE_STDCALL_WRAPPER(20,ITextHostImpl_TxScreenToClient,8)
580 DEFINE_STDCALL_WRAPPER(21,ITextHostImpl_TxClientToScreen,8)
581 DEFINE_STDCALL_WRAPPER(22,ITextHostImpl_TxActivate,8)
582 DEFINE_STDCALL_WRAPPER(23,ITextHostImpl_TxDeactivate,8)
583 DEFINE_STDCALL_WRAPPER(24,ITextHostImpl_TxGetClientRect,8)
584 DEFINE_STDCALL_WRAPPER(25,ITextHostImpl_TxGetViewInset,8)
585 DEFINE_STDCALL_WRAPPER(26,ITextHostImpl_TxGetCharFormat,8)
586 DEFINE_STDCALL_WRAPPER(27,ITextHostImpl_TxGetParaFormat,8)
587 DEFINE_STDCALL_WRAPPER(28,ITextHostImpl_TxGetSysColor,8)
588 DEFINE_STDCALL_WRAPPER(29,ITextHostImpl_TxGetBackStyle,8)
589 DEFINE_STDCALL_WRAPPER(30,ITextHostImpl_TxGetMaxLength,8)
590 DEFINE_STDCALL_WRAPPER(31,ITextHostImpl_TxGetScrollBars,8)
591 DEFINE_STDCALL_WRAPPER(32,ITextHostImpl_TxGetPasswordChar,8)
592 DEFINE_STDCALL_WRAPPER(33,ITextHostImpl_TxGetAcceleratorPos,8)
593 DEFINE_STDCALL_WRAPPER(34,ITextHostImpl_TxGetExtent,8)
594 DEFINE_STDCALL_WRAPPER(35,ITextHostImpl_OnTxCharFormatChange,8)
595 DEFINE_STDCALL_WRAPPER(36,ITextHostImpl_OnTxParaFormatChange,8)
596 DEFINE_STDCALL_WRAPPER(37,ITextHostImpl_TxGetPropertyBits,12)
597 DEFINE_STDCALL_WRAPPER(38,ITextHostImpl_TxNotify,12)
598 DEFINE_STDCALL_WRAPPER(39,ITextHostImpl_TxImmGetContext,4)
599 DEFINE_STDCALL_WRAPPER(40,ITextHostImpl_TxImmReleaseContext,8)
600 DEFINE_STDCALL_WRAPPER(41,ITextHostImpl_TxGetSelectionBarWidth,8)
601 
602 const ITextHostVtbl itextHostStdcallVtbl = {
603  NULL,
604  NULL,
605  NULL,
606  STDCALL(ITextHostImpl_TxGetDC),
607  STDCALL(ITextHostImpl_TxReleaseDC),
615  STDCALL(ITextHostImpl_TxShowCaret),
617  STDCALL(ITextHostImpl_TxSetTimer),
618  STDCALL(ITextHostImpl_TxKillTimer),
621  STDCALL(ITextHostImpl_TxSetFocus),
622  STDCALL(ITextHostImpl_TxSetCursor),
625  STDCALL(ITextHostImpl_TxActivate),
637  STDCALL(ITextHostImpl_TxGetExtent),
641  STDCALL(ITextHostImpl_TxNotify),
645 };
646 
647 #endif /* __i386__ */
648 
649 static const ITextHostVtbl textHostVtbl = {
692 };
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetScrollRange(ITextHost *iface, INT fnBar, LONG nMinPos, INT nMaxPos, BOOL fRedraw)
Definition: txthost.c:130
#define PFA_RIGHT
Definition: richedit.h:922
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_OnTxCharFormatChange(ITextHost *iface, const CHARFORMATW *pcf)
Definition: txthost.c:340
#define ES_CENTER
Definition: pedump.c:665
#define ES_VERTICAL
Definition: richedit.h:229
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
enum _TXTBACKSTYLE TXTBACKSTYLE
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxClientToScreen(ITextHost *iface, LPPOINT lppt)
Definition: txthost.c:226
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetPasswordChar(ITextHost *iface, WCHAR *pch)
Definition: txthost.c:320
#define EN_MAXTEXT
Definition: winuser.h:2008
#define REFIID
Definition: guiddef.h:118
#define MAKEWPARAM(l, h)
Definition: winuser.h:3984
#define E_NOINTERFACE
Definition: winerror.h:2364
ITextHost * ME_CreateTextHost(HWND hwnd, CREATESTRUCTW *cs, BOOL bEmulateVersion10)
Definition: txthost.c:44
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetScrollBars(ITextHost *iface, DWORD *pdwScrollBar)
Definition: txthost.c:297
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
DWORD styleFlags
Definition: editstr.h:388
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetTimer(ITextHost *iface, UINT idTimer, UINT uTimeout)
Definition: txthost.c:177
DECLSPEC_HIDDEN INT WINAPI ITextHostImpl_TxReleaseDC(ITextHost *iface, HDC hdc)
Definition: txthost.c:112
HDC WINAPI GetDC(_In_opt_ HWND)
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetMaxLength(ITextHost *iface, DWORD *pLength)
Definition: txthost.c:290
REFIID riid
Definition: precomp.h:44
GLint dy
Definition: linetemp.h:97
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxSetCursor(ITextHost *iface, HCURSOR hcur, BOOL fText)
Definition: txthost.c:213
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetCharFormat(ITextHost *iface, const CHARFORMATW **ppCF)
Definition: txthost.c:263
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetViewInset(ITextHost *iface, LPRECT prc)
Definition: txthost.c:253
#define ES_MULTILINE
Definition: pedump.c:667
static HDC
Definition: imagelist.c:92
#define ECO_AUTOWORDSELECTION
Definition: richedit.h:456
WORD wAlignment
Definition: richedit.h:673
BOOL WINAPI ShowScrollBar(_In_ HWND, _In_ int, _In_ BOOL)
BOOL WINAPI UpdateWindow(_In_ HWND)
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetParaFormat(ITextHost *iface, const PARAFORMAT **fmt)
Definition: txthost.c:269
LONG top
Definition: windef.h:307
#define EN_SELCHANGE
Definition: richedit.h:193
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetAcceleratorPos(ITextHost *iface, LONG *pch)
Definition: txthost.c:327
#define PFM_ALIGNMENT
Definition: richedit.h:841
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
HWND WINAPI SetFocus(_In_opt_ HWND)
#define EN_PROTECTED
Definition: richedit.h:195
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetCaretPos(ITextHost *iface, INT x, INT y)
Definition: txthost.c:171
#define ES_READONLY
Definition: pedump.c:675
#define GetWindowLongPtrW
Definition: winuser.h:4804
LONG left
Definition: windef.h:306
HICON HCURSOR
Definition: windef.h:299
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxShowCaret(ITextHost *iface, BOOL fShow)
Definition: txthost.c:162
LONG right
Definition: windef.h:308
#define E_FAIL
Definition: ddrawi.h:102
int32_t INT
Definition: typedefs.h:57
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxNotify(ITextHost *iface, DWORD iNotify, void *pv)
Definition: txthost.c:418
Definition: send.c:48
DWORD WINAPI GetSysColor(_In_ int)
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetExtent(ITextHost *iface, LPSIZEL lpExtent)
Definition: txthost.c:334
#define pch(ap)
Definition: match.c:418
#define ES_PASSWORD
Definition: pedump.c:670
struct ITextHostImpl ITextHostImpl
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxScrollWindowEx(ITextHost *iface, INT dx, INT dy, LPCRECT lprcScroll, LPCRECT lprcClip, HRGN hRgnUpdate, LPRECT lprcUpdate, UINT fuScroll)
Definition: txthost.c:189
#define EN_SAVECLIPBOARD
Definition: richedit.h:199
uint32_t cs
Definition: isohybrid.c:75
#define EN_KILLFOCUS
Definition: winuser.h:2007
GLenum GLint GLuint mask
Definition: glext.h:6028
#define EN_SETFOCUS
Definition: winuser.h:2009
HWND WINAPI SetActiveWindow(_In_ HWND)
#define ES_RIGHT
Definition: pedump.c:666
BOOL WINAPI HideCaret(_In_opt_ HWND)
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
BOOL WINAPI CreateCaret(_In_ HWND, _In_opt_ HBITMAP, _In_ int, _In_ int)
LONG ref
Definition: txthost.c:36
WINE_DEFAULT_DEBUG_CHANNEL(richedit)
GLenum GLint ref
Definition: glext.h:6028
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define FIXME(fmt,...)
Definition: debug.h:111
HWND hWnd
Definition: txthost.c:37
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
smooth NULL
Definition: ftsmooth.c:416
#define EN_ERRSPACE
Definition: winuser.h:2005
#define TXTBIT_USEPASSWORD
Definition: textserv.h:180
#define TXTBIT_AUTOWORDSEL
Definition: textserv.h:183
LONG_PTR LPARAM
Definition: windef.h:208
int WINAPI ScrollWindowEx(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT, _In_opt_ HRGN, _Out_opt_ LPRECT, _In_ UINT)
#define ES_SELECTIONBAR
Definition: richedit.h:230
DECLSPEC_HIDDEN HIMC WINAPI ITextHostImpl_TxImmGetContext(ITextHost *iface)
Definition: txthost.c:476
DWORD HIMC
Definition: dimm.idl:75
#define debugstr_guid
Definition: kernel32.h:35
static HRESULT WINAPI ITextHostImpl_QueryInterface(ITextHost *iface, REFIID riid, void **ppvObject)
Definition: txthost.c:72
DWORD dwMask
Definition: richedit.h:667
#define EN_MSGFILTER
Definition: richedit.h:191
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
HBITMAP hbmp
DECLSPEC_HIDDEN COLORREF WINAPI ITextHostImpl_TxGetSysColor(ITextHost *iface, int nIndex)
Definition: txthost.c:277
#define ES_AUTOVSCROLL
Definition: pedump.c:671
#define TXTBIT_SAVESELECTION
Definition: textserv.h:182
#define EN_DROPFILES
Definition: richedit.h:194
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetPropertyBits(ITextHost *iface, DWORD dwMask, DWORD *pdwBits)
Definition: txthost.c:352
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define TXTBIT_HIDESELECTION
Definition: textserv.h:181
LONG HRESULT
Definition: typedefs.h:78
DWORD COLORREF
Definition: windef.h:300
HIMC WINAPI ImmGetContext(HWND hWnd)
Definition: imm.c:1526
const GUID IID_IUnknown
#define PFA_CENTER
Definition: richedit.h:923
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxSetFocus(ITextHost *iface)
Definition: txthost.c:207
#define TXTBIT_WORDWRAP
Definition: textserv.h:186
#define WINAPI
Definition: msvc.h:6
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
ITextHost ITextHost_iface
Definition: txthost.c:35
DECLSPEC_HIDDEN HDC WINAPI ITextHostImpl_TxGetDC(ITextHost *iface)
Definition: txthost.c:106
unsigned long DWORD
Definition: ntddk_ex.h:95
#define TXTBIT_READONLY
Definition: textserv.h:178
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxImmReleaseContext(ITextHost *iface, HIMC himc)
Definition: txthost.c:482
PARAFORMAT2 para_fmt
Definition: txthost.c:39
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetBackStyle(ITextHost *iface, TXTBACKSTYLE *pStyle)
Definition: txthost.c:283
static ITextHostImpl * impl_from_ITextHost(ITextHost *iface)
Definition: txthost.c:67
#define DEFINE_THISCALL_WRAPPER(func, args)
Definition: msvc-thiscall.c:2
#define ES_NOHIDESEL
Definition: pedump.c:673
#define WS_HSCROLL
Definition: pedump.c:628
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
int ret
#define InterlockedDecrement
Definition: armddk.h:52
#define ES_DISABLENOSCROLL
Definition: richedit.h:224
HDC hdc
Definition: main.c:9
#define EN_OLEOPFAILED
Definition: richedit.h:200
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetSelectionBarWidth(ITextHost *iface, LONG *lSelBarWidth)
Definition: txthost.c:488
#define THISCALL(func)
Definition: asm.h:145
BOOL bEmulateVersion10
Definition: txthost.c:38
#define LongToHandle(h)
Definition: basetsd.h:82
REFIID LPVOID * ppvObject
Definition: precomp.h:44
#define TXTBIT_MULTILINE
Definition: textserv.h:177
#define ES_SAVESEL
Definition: richedit.h:226
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxEnableScrollBar(ITextHost *iface, INT fuSBFlags, INT fuArrowflags)
Definition: txthost.c:124
#define WM_COMMAND
Definition: winuser.h:1722
#define EN_HSCROLL
Definition: winuser.h:2006
#define TXTBIT_RICHTEXT
Definition: textserv.h:176
BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
Definition: imm.c:2283
#define EN_VSCROLL
Definition: winuser.h:2011
#define TM_RICHTEXT
Definition: richedit.h:1029
#define GWL_STYLE
Definition: winuser.h:846
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI SetCapture(_In_ HWND hWnd)
#define S_OK
Definition: intsafe.h:59
static const ITextHostVtbl textHostVtbl
Definition: txthost.c:42
#define InterlockedIncrement
Definition: armddk.h:53
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
#define TXTBIT_ALLOWBEEP
Definition: textserv.h:187
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetClientRect(ITextHost *iface, LPRECT prc)
Definition: txthost.c:246
#define EN_LINK
Definition: richedit.h:202
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxCreateCaret(ITextHost *iface, HBITMAP hbmp, INT xWidth, INT yHeight)
Definition: txthost.c:156
#define E_NOTIMPL
Definition: ddrawi.h:99
static ULONG WINAPI ITextHostImpl_AddRef(ITextHost *iface)
Definition: txthost.c:86
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_OnTxParaFormatChange(ITextHost *iface, const PARAFORMAT *ppf)
Definition: txthost.c:346
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxViewChange(ITextHost *iface, BOOL fUpdate)
Definition: txthost.c:149
unsigned int UINT
Definition: ndis.h:50
#define WS_VSCROLL
Definition: pedump.c:627
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint dx
Definition: linetemp.h:97
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxScreenToClient(ITextHost *iface, LPPOINT lppt)
Definition: txthost.c:220
BOOL WINAPI SetScrollRange(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ BOOL)
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxDeactivate(ITextHost *iface, LONG lNewState)
Definition: txthost.c:239
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2889
#define PFA_LEFT
Definition: richedit.h:921
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxKillTimer(ITextHost *iface, UINT idTimer)
Definition: txthost.c:183
unsigned int ULONG
Definition: retypes.h:1
GLenum GLuint id
Definition: glext.h:5579
#define const
Definition: zconf.h:230
BOOL WINAPI IsWindowVisible(_In_ HWND)
LONG bottom
Definition: windef.h:309
#define EN_UPDATE
Definition: winuser.h:2010
UINT cbSize
Definition: richedit.h:666
BOOL WINAPI ShowCaret(_In_opt_ HWND)
#define EN_STOPNOUNDO
Definition: richedit.h:197
#define SetWindowLongPtrW
Definition: winuser.h:5321
static HBITMAP
Definition: button.c:44
#define EN_REQUESTRESIZE
Definition: richedit.h:192
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxActivate(ITextHost *iface, LONG *plOldState)
Definition: txthost.c:232
BOOL WINAPI EnableScrollBar(_In_ HWND, _In_ UINT, _In_ UINT)
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxShowScrollBar(ITextHost *iface, INT fnBar, BOOL fShow)
Definition: txthost.c:118
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetScrollPos(ITextHost *iface, INT fnBar, INT nPos, BOOL fRedraw)
Definition: txthost.c:137
static ULONG WINAPI ITextHostImpl_Release(ITextHost *iface)
Definition: txthost.c:93
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxSetCapture(ITextHost *iface, BOOL fCapture)
Definition: txthost.c:198
#define INFINITE
Definition: serial.h:102
Arabic default style
Definition: afstyles.h:93
_Out_ LPRECT prc
Definition: ntgdi.h:1658
#define memset(x, y, z)
Definition: compat.h:39
#define TXTBIT_VERTICAL
Definition: textserv.h:184
int WINAPI SetScrollPos(_In_ HWND, _In_ int, _In_ int, _In_ BOOL)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
#define ES_AUTOHSCROLL
Definition: pedump.c:672
Definition: dsound.c:943
BOOL WINAPI SetCaretPos(_In_ int, _In_ int)
#define GWLP_ID
Definition: winuser.h:854
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define ES_NOOLEDRAGDROP
Definition: richedit.h:223
#define WM_NOTIFY
Definition: richedit.h:61
#define TXTBIT_DISABLEDRAG
Definition: textserv.h:188
#define HandleToLong(h)
Definition: basetsd.h:80
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxInvalidateRect(ITextHost *iface, LPCRECT prc, BOOL fMode)
Definition: txthost.c:143
#define EN_CHANGE
Definition: winuser.h:2004