ReactOS  0.4.14-dev-342-gdc047f9
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 #include "config.h"
22 #include "wine/port.h"
23 
24 #define COBJMACROS
25 
26 #include "editor.h"
27 #include "ole2.h"
28 #include "richole.h"
29 #include "imm.h"
30 #include "textserv.h"
31 #include "wine/debug.h"
32 #include "editstr.h"
33 
35 
36 typedef struct ITextHostImpl {
37  ITextHost ITextHost_iface;
43 
44 static const ITextHostVtbl textHostVtbl;
45 
46 ITextHost *ME_CreateTextHost(HWND hwnd, CREATESTRUCTW *cs, BOOL bEmulateVersion10)
47 {
48  ITextHostImpl *texthost;
49 
50  texthost = CoTaskMemAlloc(sizeof(*texthost));
51  if (!texthost) return NULL;
52 
53  texthost->ITextHost_iface.lpVtbl = &textHostVtbl;
54  texthost->ref = 1;
55  texthost->hWnd = hwnd;
56  texthost->bEmulateVersion10 = bEmulateVersion10;
57  memset( &texthost->para_fmt, 0, sizeof(texthost->para_fmt) );
58  texthost->para_fmt.cbSize = sizeof(texthost->para_fmt);
59  texthost->para_fmt.dwMask = PFM_ALIGNMENT;
60  texthost->para_fmt.wAlignment = PFA_LEFT;
61  if (cs->style & ES_RIGHT)
62  texthost->para_fmt.wAlignment = PFA_RIGHT;
63  if (cs->style & ES_CENTER)
64  texthost->para_fmt.wAlignment = PFA_CENTER;
65 
66  return &texthost->ITextHost_iface;
67 }
68 
69 static inline ITextHostImpl *impl_from_ITextHost(ITextHost *iface)
70 {
71  return CONTAINING_RECORD(iface, ITextHostImpl, ITextHost_iface);
72 }
73 
75 {
77 
78  if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_ITextHost)) {
79  *ppvObject = &This->ITextHost_iface;
80  ITextHost_AddRef((ITextHost *)*ppvObject);
81  return S_OK;
82  }
83 
84  FIXME("Unknown interface: %s\n", debugstr_guid(riid));
85  return E_NOINTERFACE;
86 }
87 
88 static ULONG WINAPI ITextHostImpl_AddRef(ITextHost *iface)
89 {
92  return ref;
93 }
94 
95 static ULONG WINAPI ITextHostImpl_Release(ITextHost *iface)
96 {
99 
100  if (!ref)
101  {
102  SetWindowLongPtrW(This->hWnd, 0, 0);
104  }
105  return ref;
106 }
107 
109 {
111  return GetDC(This->hWnd);
112 }
113 
115 {
117  return ReleaseDC(This->hWnd, hdc);
118 }
119 
121 {
123  return ShowScrollBar(This->hWnd, fnBar, fShow);
124 }
125 
126 DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxEnableScrollBar(ITextHost *iface, INT fuSBFlags, INT fuArrowflags)
127 {
129  return EnableScrollBar(This->hWnd, fuSBFlags, fuArrowflags);
130 }
131 
132 DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetScrollRange(ITextHost *iface, INT fnBar, LONG nMinPos, INT nMaxPos,
133  BOOL fRedraw)
134 {
136  return SetScrollRange(This->hWnd, fnBar, nMinPos, nMaxPos, fRedraw);
137 }
138 
139 DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetScrollPos(ITextHost *iface, INT fnBar, INT nPos, BOOL fRedraw)
140 {
142  return SetScrollPos(This->hWnd, fnBar, nPos, fRedraw) != 0;
143 }
144 
146 {
148  InvalidateRect(This->hWnd, prc, fMode);
149 }
150 
151 DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxViewChange(ITextHost *iface, BOOL fUpdate)
152 {
154  if (fUpdate)
155  UpdateWindow(This->hWnd);
156 }
157 
159 {
161  return CreateCaret(This->hWnd, hbmp, xWidth, yHeight);
162 }
163 
165 {
167  if (fShow)
168  return ShowCaret(This->hWnd);
169  else
170  return HideCaret(This->hWnd);
171 }
172 
174  INT x, INT y)
175 {
176  return SetCaretPos(x, y);
177 }
178 
179 DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetTimer(ITextHost *iface, UINT idTimer, UINT uTimeout)
180 {
182  return SetTimer(This->hWnd, idTimer, uTimeout, NULL) != 0;
183 }
184 
185 DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxKillTimer(ITextHost *iface, UINT idTimer)
186 {
188  KillTimer(This->hWnd, idTimer);
189 }
190 
192  LPCRECT lprcClip, HRGN hRgnUpdate, LPRECT lprcUpdate,
193  UINT fuScroll)
194 {
196  ScrollWindowEx(This->hWnd, dx, dy, lprcScroll, lprcClip,
197  hRgnUpdate, lprcUpdate, fuScroll);
198 }
199 
200 DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxSetCapture(ITextHost *iface, BOOL fCapture)
201 {
203  if (fCapture)
204  SetCapture(This->hWnd);
205  else
206  ReleaseCapture();
207 }
208 
210 {
212  SetFocus(This->hWnd);
213 }
214 
216  HCURSOR hcur,
217  BOOL fText)
218 {
219  SetCursor(hcur);
220 }
221 
223 {
225  return ScreenToClient(This->hWnd, lppt);
226 }
227 
229 {
231  return ClientToScreen(This->hWnd, lppt);
232 }
233 
235 {
237  *plOldState = HandleToLong(SetActiveWindow(This->hWnd));
238  return (*plOldState ? S_OK : E_FAIL);
239 }
240 
242  LONG lNewState)
243 {
244  HWND ret = SetActiveWindow(LongToHandle(lNewState));
245  return (ret ? S_OK : E_FAIL);
246 }
247 
249 {
251  int ret = GetClientRect(This->hWnd, prc);
252  return (ret ? S_OK : E_FAIL);
253 }
254 
256  LPRECT prc)
257 {
258  prc->top = 0;
259  prc->left = 0;
260  prc->bottom = 0;
261  prc->right = 0;
262  return S_OK;
263 }
264 
266  const CHARFORMATW **ppCF)
267 {
268  return E_NOTIMPL;
269 }
270 
272  const PARAFORMAT **fmt)
273 {
275  *fmt = (const PARAFORMAT *)&This->para_fmt;
276  return S_OK;
277 }
278 
280  int nIndex)
281 {
282  return GetSysColor(nIndex);
283 }
284 
286  TXTBACKSTYLE *pStyle)
287 {
288  *pStyle = TXTBACK_OPAQUE;
289  return S_OK;
290 }
291 
293  DWORD *pLength)
294 {
295  *pLength = INFINITE;
296  return S_OK;
297 }
298 
300 {
302  ME_TextEditor *editor = (ME_TextEditor*)GetWindowLongPtrW(This->hWnd, 0);
303  const DWORD mask = WS_VSCROLL|
304  WS_HSCROLL|
308  if (editor)
309  {
310  *pdwScrollBar = editor->styleFlags & mask;
311  } else {
313  if (style & WS_VSCROLL)
315  if (!This->bEmulateVersion10 && (style & WS_HSCROLL))
317  *pdwScrollBar = style & mask;
318  }
319  return S_OK;
320 }
321 
323  WCHAR *pch)
324 {
325  *pch = '*';
326  return S_OK;
327 }
328 
330  LONG *pch)
331 {
332  *pch = -1;
333  return S_OK;
334 }
335 
337  LPSIZEL lpExtent)
338 {
339  return E_NOTIMPL;
340 }
341 
343  const CHARFORMATW *pcf)
344 {
345  return S_OK;
346 }
347 
349  const PARAFORMAT *ppf)
350 {
351  return S_OK;
352 }
353 
355 {
357  ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(This->hWnd, 0);
358  DWORD style;
359  DWORD dwBits = 0;
360 
361  if (editor)
362  {
363  style = editor->styleFlags;
364  if (editor->mode & TM_RICHTEXT)
365  dwBits |= TXTBIT_RICHTEXT;
366  if (editor->bWordWrap)
367  dwBits |= TXTBIT_WORDWRAP;
369  dwBits |= TXTBIT_AUTOWORDSEL;
370  } else {
371  DWORD dwScrollBar;
372 
374  ITextHostImpl_TxGetScrollBars(iface, &dwScrollBar);
375 
377  if (!(dwScrollBar & ES_AUTOHSCROLL))
378  dwBits |= TXTBIT_WORDWRAP;
379  }
380 
381  /* Bits that correspond to window styles. */
382  if (style & ES_MULTILINE)
383  dwBits |= TXTBIT_MULTILINE;
384  if (style & ES_READONLY)
385  dwBits |= TXTBIT_READONLY;
386  if (style & ES_PASSWORD)
387  dwBits |= TXTBIT_USEPASSWORD;
388  if (!(style & ES_NOHIDESEL))
389  dwBits |= TXTBIT_HIDESELECTION;
390  if (style & ES_SAVESEL)
391  dwBits |= TXTBIT_SAVESELECTION;
392  if (style & ES_VERTICAL)
393  dwBits |= TXTBIT_VERTICAL;
394  if (style & ES_NOOLEDRAGDROP)
395  dwBits |= TXTBIT_DISABLEDRAG;
396 
397  dwBits |= TXTBIT_ALLOWBEEP;
398 
399  /* The following bits are always FALSE because they are probably only
400  * needed for ITextServices_OnTxPropertyBitsChange:
401  * TXTBIT_VIEWINSETCHANGE
402  * TXTBIT_BACKSTYLECHANGE
403  * TXTBIT_MAXLENGTHCHANGE
404  * TXTBIT_CHARFORMATCHANGE
405  * TXTBIT_PARAFORMATCHANGE
406  * TXTBIT_SHOWACCELERATOR
407  * TXTBIT_EXTENTCHANGE
408  * TXTBIT_SELBARCHANGE
409  * TXTBIT_SCROLLBARCHANGE
410  * TXTBIT_CLIENTRECTCHANGE
411  *
412  * Documented by MSDN as not supported:
413  * TXTBIT_USECURRENTBKG
414  */
415 
416  *pdwBits = dwBits & dwMask;
417  return S_OK;
418 }
419 
420 DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxNotify(ITextHost *iface, DWORD iNotify, void *pv)
421 {
423  ME_TextEditor *editor = (ME_TextEditor*)GetWindowLongPtrW(This->hWnd, 0);
424  HWND hwnd = This->hWnd;
425  UINT id;
426 
427  if (!editor || !editor->hwndParent) return S_OK;
428 
429  id = GetWindowLongW(hwnd, GWLP_ID);
430 
431  switch (iNotify)
432  {
433  case EN_DROPFILES:
434  case EN_LINK:
435  case EN_OLEOPFAILED:
436  case EN_PROTECTED:
437  case EN_REQUESTRESIZE:
438  case EN_SAVECLIPBOARD:
439  case EN_SELCHANGE:
440  case EN_STOPNOUNDO:
441  {
442  /* FIXME: Verify this assumption that pv starts with NMHDR. */
443  NMHDR *info = pv;
444  if (!info)
445  return E_FAIL;
446 
447  info->hwndFrom = hwnd;
448  info->idFrom = id;
449  info->code = iNotify;
450  SendMessageW(editor->hwndParent, WM_NOTIFY, id, (LPARAM)info);
451  break;
452  }
453 
454  case EN_UPDATE:
455  /* Only sent when the window is visible. */
456  if (!IsWindowVisible(hwnd))
457  break;
458  /* Fall through */
459  case EN_CHANGE:
460  case EN_ERRSPACE:
461  case EN_HSCROLL:
462  case EN_KILLFOCUS:
463  case EN_MAXTEXT:
464  case EN_SETFOCUS:
465  case EN_VSCROLL:
466  SendMessageW(editor->hwndParent, WM_COMMAND, MAKEWPARAM(id, iNotify), (LPARAM)hwnd);
467  break;
468 
469  case EN_MSGFILTER:
470  FIXME("EN_MSGFILTER is documented as not being sent to TxNotify\n");
471  /* fall through */
472  default:
473  return E_FAIL;
474  }
475  return S_OK;
476 }
477 
479 {
481  return ImmGetContext(This->hWnd);
482 }
483 
485 {
487  ImmReleaseContext(This->hWnd, himc);
488 }
489 
491 {
493  ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(This->hWnd, 0);
494 
495  DWORD style = editor ? editor->styleFlags
496  : GetWindowLongW(This->hWnd, GWL_STYLE);
497  *lSelBarWidth = (style & ES_SELECTIONBAR) ? 225 : 0; /* in HIMETRIC */
498  return S_OK;
499 }
500 
501 
502 #ifdef __i386__ /* thiscall functions are i386-specific */
503 
504 #define THISCALL(func) (void *) __thiscall_ ## func
505 #ifdef _MSC_VER
506 #define DEFINE_THISCALL_WRAPPER(func,args) \
507  __declspec(naked) HRESULT __thiscall_##func(void) \
508  { \
509  __asm pop eax \
510  __asm push ecx \
511  __asm push eax \
512  __asm jmp func \
513  }
514 #else /* _MSC_VER */
515 #define DEFINE_THISCALL_WRAPPER(func,args) \
516  extern HRESULT __thiscall_ ## func(void); \
517  __ASM_GLOBAL_FUNC(__thiscall_ ## func, \
518  "popl %eax\n\t" \
519  "pushl %ecx\n\t" \
520  "pushl %eax\n\t" \
521  "jmp " __ASM_NAME(#func) __ASM_STDCALL(args) )
522 #endif /* _MSC_VER */
523 
524 #else /* __i386__ */
525 
526 #define THISCALL(func) func
527 #define DEFINE_THISCALL_WRAPPER(func,args) /* nothing */
528 
529 #endif /* __i386__ */
530 
570 
571 #ifdef __i386__ /* thiscall functions are i386-specific */
572 
573 #define STDCALL(func) (void *) __stdcall_ ## func
574 #ifdef _MSC_VER
575 #define DEFINE_STDCALL_WRAPPER(num,func,args) \
576  __declspec(naked) HRESULT __stdcall_##func(void) \
577  { \
578  __asm pop eax \
579  __asm pop ecx \
580  __asm push eax \
581  __asm mov eax, [ecx] \
582  __asm jmp dword ptr [eax + 4*num] \
583  }
584 #else /* _MSC_VER */
585 #define DEFINE_STDCALL_WRAPPER(num,func,args) \
586  extern HRESULT __stdcall_ ## func(void); \
587  __ASM_GLOBAL_FUNC(__stdcall_ ## func, \
588  "popl %eax\n\t" \
589  "popl %ecx\n\t" \
590  "pushl %eax\n\t" \
591  "movl (%ecx), %eax\n\t" \
592  "jmp *(4*(" #num "))(%eax)" )
593 #endif /* _MSC_VER */
594 
595 DEFINE_STDCALL_WRAPPER(3,ITextHostImpl_TxGetDC,4)
596 DEFINE_STDCALL_WRAPPER(4,ITextHostImpl_TxReleaseDC,8)
597 DEFINE_STDCALL_WRAPPER(5,ITextHostImpl_TxShowScrollBar,12)
598 DEFINE_STDCALL_WRAPPER(6,ITextHostImpl_TxEnableScrollBar,12)
599 DEFINE_STDCALL_WRAPPER(7,ITextHostImpl_TxSetScrollRange,20)
600 DEFINE_STDCALL_WRAPPER(8,ITextHostImpl_TxSetScrollPos,16)
601 DEFINE_STDCALL_WRAPPER(9,ITextHostImpl_TxInvalidateRect,12)
602 DEFINE_STDCALL_WRAPPER(10,ITextHostImpl_TxViewChange,8)
603 DEFINE_STDCALL_WRAPPER(11,ITextHostImpl_TxCreateCaret,16)
604 DEFINE_STDCALL_WRAPPER(12,ITextHostImpl_TxShowCaret,8)
605 DEFINE_STDCALL_WRAPPER(13,ITextHostImpl_TxSetCaretPos,12)
606 DEFINE_STDCALL_WRAPPER(14,ITextHostImpl_TxSetTimer,12)
607 DEFINE_STDCALL_WRAPPER(15,ITextHostImpl_TxKillTimer,8)
608 DEFINE_STDCALL_WRAPPER(16,ITextHostImpl_TxScrollWindowEx,32)
609 DEFINE_STDCALL_WRAPPER(17,ITextHostImpl_TxSetCapture,8)
610 DEFINE_STDCALL_WRAPPER(18,ITextHostImpl_TxSetFocus,4)
611 DEFINE_STDCALL_WRAPPER(19,ITextHostImpl_TxSetCursor,12)
612 DEFINE_STDCALL_WRAPPER(20,ITextHostImpl_TxScreenToClient,8)
613 DEFINE_STDCALL_WRAPPER(21,ITextHostImpl_TxClientToScreen,8)
614 DEFINE_STDCALL_WRAPPER(22,ITextHostImpl_TxActivate,8)
615 DEFINE_STDCALL_WRAPPER(23,ITextHostImpl_TxDeactivate,8)
616 DEFINE_STDCALL_WRAPPER(24,ITextHostImpl_TxGetClientRect,8)
617 DEFINE_STDCALL_WRAPPER(25,ITextHostImpl_TxGetViewInset,8)
618 DEFINE_STDCALL_WRAPPER(26,ITextHostImpl_TxGetCharFormat,8)
619 DEFINE_STDCALL_WRAPPER(27,ITextHostImpl_TxGetParaFormat,8)
620 DEFINE_STDCALL_WRAPPER(28,ITextHostImpl_TxGetSysColor,8)
621 DEFINE_STDCALL_WRAPPER(29,ITextHostImpl_TxGetBackStyle,8)
622 DEFINE_STDCALL_WRAPPER(30,ITextHostImpl_TxGetMaxLength,8)
623 DEFINE_STDCALL_WRAPPER(31,ITextHostImpl_TxGetScrollBars,8)
624 DEFINE_STDCALL_WRAPPER(32,ITextHostImpl_TxGetPasswordChar,8)
625 DEFINE_STDCALL_WRAPPER(33,ITextHostImpl_TxGetAcceleratorPos,8)
626 DEFINE_STDCALL_WRAPPER(34,ITextHostImpl_TxGetExtent,8)
627 DEFINE_STDCALL_WRAPPER(35,ITextHostImpl_OnTxCharFormatChange,8)
628 DEFINE_STDCALL_WRAPPER(36,ITextHostImpl_OnTxParaFormatChange,8)
629 DEFINE_STDCALL_WRAPPER(37,ITextHostImpl_TxGetPropertyBits,12)
630 DEFINE_STDCALL_WRAPPER(38,ITextHostImpl_TxNotify,12)
631 DEFINE_STDCALL_WRAPPER(39,ITextHostImpl_TxImmGetContext,4)
632 DEFINE_STDCALL_WRAPPER(40,ITextHostImpl_TxImmReleaseContext,8)
633 DEFINE_STDCALL_WRAPPER(41,ITextHostImpl_TxGetSelectionBarWidth,8)
634 
635 const ITextHostVtbl itextHostStdcallVtbl = {
636  NULL,
637  NULL,
638  NULL,
639  STDCALL(ITextHostImpl_TxGetDC),
640  STDCALL(ITextHostImpl_TxReleaseDC),
648  STDCALL(ITextHostImpl_TxShowCaret),
650  STDCALL(ITextHostImpl_TxSetTimer),
651  STDCALL(ITextHostImpl_TxKillTimer),
654  STDCALL(ITextHostImpl_TxSetFocus),
655  STDCALL(ITextHostImpl_TxSetCursor),
658  STDCALL(ITextHostImpl_TxActivate),
670  STDCALL(ITextHostImpl_TxGetExtent),
674  STDCALL(ITextHostImpl_TxNotify),
678 };
679 
680 #endif /* __i386__ */
681 
682 static const ITextHostVtbl textHostVtbl = {
725 };
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetScrollRange(ITextHost *iface, INT fnBar, LONG nMinPos, INT nMaxPos, BOOL fRedraw)
Definition: txthost.c:132
#define PFA_RIGHT
Definition: richedit.h:922
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_OnTxCharFormatChange(ITextHost *iface, const CHARFORMATW *pcf)
Definition: txthost.c:342
#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:228
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetPasswordChar(ITextHost *iface, WCHAR *pch)
Definition: txthost.c:322
#define EN_MAXTEXT
Definition: winuser.h:2008
#define REFIID
Definition: guiddef.h:118
#define MAKEWPARAM(l, h)
Definition: winuser.h:3948
#define E_NOINTERFACE
Definition: winerror.h:2364
ITextHost * ME_CreateTextHost(HWND hwnd, CREATESTRUCTW *cs, BOOL bEmulateVersion10)
Definition: txthost.c:46
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetScrollBars(ITextHost *iface, DWORD *pdwScrollBar)
Definition: txthost.c:299
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
DWORD styleFlags
Definition: editstr.h:392
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetTimer(ITextHost *iface, UINT idTimer, UINT uTimeout)
Definition: txthost.c:179
DECLSPEC_HIDDEN INT WINAPI ITextHostImpl_TxReleaseDC(ITextHost *iface, HDC hdc)
Definition: txthost.c:114
HDC WINAPI GetDC(_In_opt_ HWND)
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetMaxLength(ITextHost *iface, DWORD *pLength)
Definition: txthost.c:292
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:215
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetCharFormat(ITextHost *iface, const CHARFORMATW **ppCF)
Definition: txthost.c:265
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetViewInset(ITextHost *iface, LPRECT prc)
Definition: txthost.c:255
#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 DEFINE_THISCALL_WRAPPER(func, args)
Definition: txthost.c:527
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetParaFormat(ITextHost *iface, const PARAFORMAT **fmt)
Definition: txthost.c:271
LONG top
Definition: windef.h:292
#define EN_SELCHANGE
Definition: richedit.h:193
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetAcceleratorPos(ITextHost *iface, LONG *pch)
Definition: txthost.c:329
#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:173
#define ES_READONLY
Definition: pedump.c:675
#define GetWindowLongPtrW
Definition: winuser.h:4730
LONG left
Definition: windef.h:291
HICON HCURSOR
Definition: windef.h:284
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxShowCaret(ITextHost *iface, BOOL fShow)
Definition: txthost.c:164
LONG right
Definition: windef.h:293
#define E_FAIL
Definition: ddrawi.h:102
int32_t INT
Definition: typedefs.h:56
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxNotify(ITextHost *iface, DWORD iNotify, void *pv)
Definition: txthost.c:420
Definition: send.c:47
DWORD WINAPI GetSysColor(_In_ int)
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetExtent(ITextHost *iface, LPSIZEL lpExtent)
Definition: txthost.c:336
#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:191
#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:38
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:110
HWND hWnd
Definition: txthost.c:39
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:478
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:74
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:279
#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:354
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define TXTBIT_HIDESELECTION
Definition: textserv.h:181
LONG HRESULT
Definition: typedefs.h:77
#define THISCALL(func)
Definition: txthost.c:526
DWORD COLORREF
Definition: windef.h:285
HIMC WINAPI ImmGetContext(HWND hWnd)
Definition: imm.c:1518
const GUID IID_IUnknown
#define PFA_CENTER
Definition: richedit.h:923
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxSetFocus(ITextHost *iface)
Definition: txthost.c:209
#define TXTBIT_WORDWRAP
Definition: textserv.h:186
#define WINAPI
Definition: msvc.h:8
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
ITextHost ITextHost_iface
Definition: txthost.c:37
DECLSPEC_HIDDEN HDC WINAPI ITextHostImpl_TxGetDC(ITextHost *iface)
Definition: txthost.c:108
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:484
PARAFORMAT2 para_fmt
Definition: txthost.c:41
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_TxGetBackStyle(ITextHost *iface, TXTBACKSTYLE *pStyle)
Definition: txthost.c:285
static ITextHostImpl * impl_from_ITextHost(ITextHost *iface)
Definition: txthost.c:69
#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:490
BOOL bEmulateVersion10
Definition: txthost.c:40
#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:126
#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:2275
#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:44
#define InterlockedIncrement
Definition: armddk.h:53
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
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:248
#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:158
#define E_NOTIMPL
Definition: ddrawi.h:99
static ULONG WINAPI ITextHostImpl_AddRef(ITextHost *iface)
Definition: txthost.c:88
DECLSPEC_HIDDEN HRESULT WINAPI ITextHostImpl_OnTxParaFormatChange(ITextHost *iface, const PARAFORMAT *ppf)
Definition: txthost.c:348
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxViewChange(ITextHost *iface, BOOL fUpdate)
Definition: txthost.c:151
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:222
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:241
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2888
#define PFA_LEFT
Definition: richedit.h:921
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxKillTimer(ITextHost *iface, UINT idTimer)
Definition: txthost.c:185
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:294
#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:5247
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:234
BOOL WINAPI EnableScrollBar(_In_ HWND, _In_ UINT, _In_ UINT)
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxShowScrollBar(ITextHost *iface, INT fnBar, BOOL fShow)
Definition: txthost.c:120
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
DECLSPEC_HIDDEN BOOL WINAPI ITextHostImpl_TxSetScrollPos(ITextHost *iface, INT fnBar, INT nPos, BOOL fRedraw)
Definition: txthost.c:139
static ULONG WINAPI ITextHostImpl_Release(ITextHost *iface)
Definition: txthost.c:95
DECLSPEC_HIDDEN void WINAPI ITextHostImpl_TxSetCapture(ITextHost *iface, BOOL fCapture)
Definition: txthost.c:200
#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:404
#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:145
#define EN_CHANGE
Definition: winuser.h:2004