ReactOS  0.4.15-dev-4570-g4f8bbd1
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 __thiscall ITextHostImpl_TxEnableScrollBar(ITextHost *iface, INT fuSBFlags, INT fuArrowflags)
125 {
127  return EnableScrollBar(This->hWnd, fuSBFlags, fuArrowflags);
128 }
129 
130 DECLSPEC_HIDDEN BOOL __thiscall 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 __thiscall 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 
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 __thiscall ITextHostImpl_TxSetTimer(ITextHost *iface, UINT idTimer, UINT uTimeout)
178 {
180  return SetTimer(This->hWnd, idTimer, uTimeout, NULL) != 0;
181 }
182 
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 
199 {
201  if (fCapture)
202  SetCapture(This->hWnd);
203  else
204  ReleaseCapture();
205 }
206 
208 {
210  SetFocus(This->hWnd);
211 }
212 
214 {
215  SetCursor(hcur);
216 }
217 
219 {
221  return ScreenToClient(This->hWnd, lppt);
222 }
223 
225 {
227  return ClientToScreen(This->hWnd, lppt);
228 }
229 
231 {
233  *plOldState = HandleToLong(SetActiveWindow(This->hWnd));
234  return (*plOldState ? S_OK : E_FAIL);
235 }
236 
238 {
239  HWND ret = SetActiveWindow(LongToHandle(lNewState));
240  return (ret ? S_OK : E_FAIL);
241 }
242 
244 {
246  int ret = GetClientRect(This->hWnd, prc);
247  return (ret ? S_OK : E_FAIL);
248 }
249 
251 {
252  prc->top = 0;
253  prc->left = 0;
254  prc->bottom = 0;
255  prc->right = 0;
256  return S_OK;
257 }
258 
260 {
261  return E_NOTIMPL;
262 }
263 
265 {
267  *fmt = (const PARAFORMAT *)&This->para_fmt;
268  return S_OK;
269 }
270 
272 {
273  return GetSysColor(nIndex);
274 }
275 
277 {
278  *pStyle = TXTBACK_OPAQUE;
279  return S_OK;
280 }
281 
283 {
284  *pLength = INFINITE;
285  return S_OK;
286 }
287 
289 {
291  ME_TextEditor *editor = (ME_TextEditor*)GetWindowLongPtrW(This->hWnd, 0);
292  const DWORD mask = WS_VSCROLL|
293  WS_HSCROLL|
297  if (editor)
298  {
299  *pdwScrollBar = editor->styleFlags & mask;
300  } else {
302  if (style & WS_VSCROLL)
304  if (!This->bEmulateVersion10 && (style & WS_HSCROLL))
306  *pdwScrollBar = style & mask;
307  }
308  return S_OK;
309 }
310 
312 {
313  *pch = '*';
314  return S_OK;
315 }
316 
318 {
319  *pch = -1;
320  return S_OK;
321 }
322 
324 {
325  return E_NOTIMPL;
326 }
327 
329 {
330  return S_OK;
331 }
332 
334 {
335  return S_OK;
336 }
337 
339 {
341  ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(This->hWnd, 0);
342  DWORD style;
343  DWORD dwBits = 0;
344 
345  if (editor)
346  {
347  style = editor->styleFlags;
348  if (editor->mode & TM_RICHTEXT)
349  dwBits |= TXTBIT_RICHTEXT;
350  if (editor->bWordWrap)
351  dwBits |= TXTBIT_WORDWRAP;
353  dwBits |= TXTBIT_AUTOWORDSEL;
354  } else {
355  DWORD dwScrollBar;
356 
358  ITextHostImpl_TxGetScrollBars(iface, &dwScrollBar);
359 
361  if (!(dwScrollBar & ES_AUTOHSCROLL))
362  dwBits |= TXTBIT_WORDWRAP;
363  }
364 
365  /* Bits that correspond to window styles. */
366  if (style & ES_MULTILINE)
367  dwBits |= TXTBIT_MULTILINE;
368  if (style & ES_READONLY)
369  dwBits |= TXTBIT_READONLY;
370  if (style & ES_PASSWORD)
371  dwBits |= TXTBIT_USEPASSWORD;
372  if (!(style & ES_NOHIDESEL))
373  dwBits |= TXTBIT_HIDESELECTION;
374  if (style & ES_SAVESEL)
375  dwBits |= TXTBIT_SAVESELECTION;
376  if (style & ES_VERTICAL)
377  dwBits |= TXTBIT_VERTICAL;
378  if (style & ES_NOOLEDRAGDROP)
379  dwBits |= TXTBIT_DISABLEDRAG;
380 
381  dwBits |= TXTBIT_ALLOWBEEP;
382 
383  /* The following bits are always FALSE because they are probably only
384  * needed for ITextServices_OnTxPropertyBitsChange:
385  * TXTBIT_VIEWINSETCHANGE
386  * TXTBIT_BACKSTYLECHANGE
387  * TXTBIT_MAXLENGTHCHANGE
388  * TXTBIT_CHARFORMATCHANGE
389  * TXTBIT_PARAFORMATCHANGE
390  * TXTBIT_SHOWACCELERATOR
391  * TXTBIT_EXTENTCHANGE
392  * TXTBIT_SELBARCHANGE
393  * TXTBIT_SCROLLBARCHANGE
394  * TXTBIT_CLIENTRECTCHANGE
395  *
396  * Documented by MSDN as not supported:
397  * TXTBIT_USECURRENTBKG
398  */
399 
400  *pdwBits = dwBits & dwMask;
401  return S_OK;
402 }
403 
404 DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxNotify(ITextHost *iface, DWORD iNotify, void *pv)
405 {
407  ME_TextEditor *editor = (ME_TextEditor*)GetWindowLongPtrW(This->hWnd, 0);
408  HWND hwnd = This->hWnd;
409  UINT id;
410 
411  if (!editor || !editor->hwndParent) return S_OK;
412 
413  id = GetWindowLongW(hwnd, GWLP_ID);
414 
415  switch (iNotify)
416  {
417  case EN_DROPFILES:
418  case EN_LINK:
419  case EN_OLEOPFAILED:
420  case EN_PROTECTED:
421  case EN_REQUESTRESIZE:
422  case EN_SAVECLIPBOARD:
423  case EN_SELCHANGE:
424  case EN_STOPNOUNDO:
425  {
426  /* FIXME: Verify this assumption that pv starts with NMHDR. */
427  NMHDR *info = pv;
428  if (!info)
429  return E_FAIL;
430 
431  info->hwndFrom = hwnd;
432  info->idFrom = id;
433  info->code = iNotify;
434  SendMessageW(editor->hwndParent, WM_NOTIFY, id, (LPARAM)info);
435  break;
436  }
437 
438  case EN_UPDATE:
439  /* Only sent when the window is visible. */
440  if (!IsWindowVisible(hwnd))
441  break;
442  /* Fall through */
443  case EN_CHANGE:
444  case EN_ERRSPACE:
445  case EN_HSCROLL:
446  case EN_KILLFOCUS:
447  case EN_MAXTEXT:
448  case EN_SETFOCUS:
449  case EN_VSCROLL:
450  SendMessageW(editor->hwndParent, WM_COMMAND, MAKEWPARAM(id, iNotify), (LPARAM)hwnd);
451  break;
452 
453  case EN_MSGFILTER:
454  FIXME("EN_MSGFILTER is documented as not being sent to TxNotify\n");
455  /* fall through */
456  default:
457  return E_FAIL;
458  }
459  return S_OK;
460 }
461 
463 {
465  return ImmGetContext(This->hWnd);
466 }
467 
469 {
471  ImmReleaseContext(This->hWnd, himc);
472 }
473 
475 {
477  ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongPtrW(This->hWnd, 0);
478 
479  DWORD style = editor ? editor->styleFlags
480  : GetWindowLongW(This->hWnd, GWL_STYLE);
481  *lSelBarWidth = (style & ES_SELECTIONBAR) ? 225 : 0; /* in HIMETRIC */
482  return S_OK;
483 }
523 
524 #if defined(__i386__) && !defined(__MINGW32__) /* thiscall functions are i386-specific */
525 
526 #define STDCALL(func) (void *) __stdcall_ ## func
527 #ifdef _MSC_VER
528 #define DEFINE_STDCALL_WRAPPER(num,func,args) \
529  __declspec(naked) HRESULT __stdcall_##func(void) \
530  { \
531  __asm pop eax \
532  __asm pop ecx \
533  __asm push eax \
534  __asm mov eax, [ecx] \
535  __asm jmp dword ptr [eax + 4*num] \
536  }
537 #else /* _MSC_VER */
538 #define DEFINE_STDCALL_WRAPPER(num,func,args) \
539  extern HRESULT __stdcall_ ## func(void); \
540  __ASM_GLOBAL_FUNC(__stdcall_ ## func, \
541  "popl %eax\n\t" \
542  "popl %ecx\n\t" \
543  "pushl %eax\n\t" \
544  "movl (%ecx), %eax\n\t" \
545  "jmp *(4*(" #num "))(%eax)" )
546 #endif /* _MSC_VER */
547 
548 DEFINE_STDCALL_WRAPPER(3,ITextHostImpl_TxGetDC,4)
549 DEFINE_STDCALL_WRAPPER(4,ITextHostImpl_TxReleaseDC,8)
550 DEFINE_STDCALL_WRAPPER(5,ITextHostImpl_TxShowScrollBar,12)
551 DEFINE_STDCALL_WRAPPER(6,ITextHostImpl_TxEnableScrollBar,12)
552 DEFINE_STDCALL_WRAPPER(7,ITextHostImpl_TxSetScrollRange,20)
553 DEFINE_STDCALL_WRAPPER(8,ITextHostImpl_TxSetScrollPos,16)
554 DEFINE_STDCALL_WRAPPER(9,ITextHostImpl_TxInvalidateRect,12)
555 DEFINE_STDCALL_WRAPPER(10,ITextHostImpl_TxViewChange,8)
556 DEFINE_STDCALL_WRAPPER(11,ITextHostImpl_TxCreateCaret,16)
557 DEFINE_STDCALL_WRAPPER(12,ITextHostImpl_TxShowCaret,8)
558 DEFINE_STDCALL_WRAPPER(13,ITextHostImpl_TxSetCaretPos,12)
559 DEFINE_STDCALL_WRAPPER(14,ITextHostImpl_TxSetTimer,12)
560 DEFINE_STDCALL_WRAPPER(15,ITextHostImpl_TxKillTimer,8)
561 DEFINE_STDCALL_WRAPPER(16,ITextHostImpl_TxScrollWindowEx,32)
562 DEFINE_STDCALL_WRAPPER(17,ITextHostImpl_TxSetCapture,8)
563 DEFINE_STDCALL_WRAPPER(18,ITextHostImpl_TxSetFocus,4)
564 DEFINE_STDCALL_WRAPPER(19,ITextHostImpl_TxSetCursor,12)
565 DEFINE_STDCALL_WRAPPER(20,ITextHostImpl_TxScreenToClient,8)
566 DEFINE_STDCALL_WRAPPER(21,ITextHostImpl_TxClientToScreen,8)
567 DEFINE_STDCALL_WRAPPER(22,ITextHostImpl_TxActivate,8)
568 DEFINE_STDCALL_WRAPPER(23,ITextHostImpl_TxDeactivate,8)
569 DEFINE_STDCALL_WRAPPER(24,ITextHostImpl_TxGetClientRect,8)
570 DEFINE_STDCALL_WRAPPER(25,ITextHostImpl_TxGetViewInset,8)
571 DEFINE_STDCALL_WRAPPER(26,ITextHostImpl_TxGetCharFormat,8)
572 DEFINE_STDCALL_WRAPPER(27,ITextHostImpl_TxGetParaFormat,8)
573 DEFINE_STDCALL_WRAPPER(28,ITextHostImpl_TxGetSysColor,8)
574 DEFINE_STDCALL_WRAPPER(29,ITextHostImpl_TxGetBackStyle,8)
575 DEFINE_STDCALL_WRAPPER(30,ITextHostImpl_TxGetMaxLength,8)
576 DEFINE_STDCALL_WRAPPER(31,ITextHostImpl_TxGetScrollBars,8)
577 DEFINE_STDCALL_WRAPPER(32,ITextHostImpl_TxGetPasswordChar,8)
578 DEFINE_STDCALL_WRAPPER(33,ITextHostImpl_TxGetAcceleratorPos,8)
579 DEFINE_STDCALL_WRAPPER(34,ITextHostImpl_TxGetExtent,8)
580 DEFINE_STDCALL_WRAPPER(35,ITextHostImpl_OnTxCharFormatChange,8)
581 DEFINE_STDCALL_WRAPPER(36,ITextHostImpl_OnTxParaFormatChange,8)
582 DEFINE_STDCALL_WRAPPER(37,ITextHostImpl_TxGetPropertyBits,12)
583 DEFINE_STDCALL_WRAPPER(38,ITextHostImpl_TxNotify,12)
584 DEFINE_STDCALL_WRAPPER(39,ITextHostImpl_TxImmGetContext,4)
585 DEFINE_STDCALL_WRAPPER(40,ITextHostImpl_TxImmReleaseContext,8)
586 DEFINE_STDCALL_WRAPPER(41,ITextHostImpl_TxGetSelectionBarWidth,8)
587 
588 const ITextHostVtbl itextHostStdcallVtbl = {
589  NULL,
590  NULL,
591  NULL,
631 };
632 
633 #endif /* __i386__ */
634 
635 static const ITextHostVtbl textHostVtbl = {
678 };
#define PFA_RIGHT
Definition: richedit.h:922
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_OnTxParaFormatChange(ITextHost *iface, const PARAFORMAT *ppf)
Definition: txthost.c:333
#define ES_CENTER
Definition: pedump.c:665
#define ES_VERTICAL
Definition: richedit.h:229
enum _TXTBACKSTYLE TXTBACKSTYLE
#define EN_MAXTEXT
Definition: winuser.h:2013
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxClientToScreen(ITextHost *iface, LPPOINT lppt)
Definition: txthost.c:224
#define REFIID
Definition: guiddef.h:118
#define MAKEWPARAM(l, h)
Definition: winuser.h:3989
#define E_NOINTERFACE
Definition: winerror.h:2364
ITextHost * ME_CreateTextHost(HWND hwnd, CREATESTRUCTW *cs, BOOL bEmulateVersion10)
Definition: txthost.c:44
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_OnTxCharFormatChange(ITextHost *iface, const CHARFORMATW *pcf)
Definition: txthost.c:328
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
DWORD styleFlags
Definition: editstr.h:388
HDC WINAPI GetDC(_In_opt_ HWND)
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetAcceleratorPos(ITextHost *iface, LONG *pch)
Definition: txthost.c:317
REFIID riid
Definition: precomp.h:44
GLint dy
Definition: linetemp.h:97
#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
LONG top
Definition: windef.h:307
#define EN_SELCHANGE
Definition: richedit.h:193
#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
#define ES_READONLY
Definition: pedump.c:675
#define GetWindowLongPtrW
Definition: winuser.h:4809
LONG left
Definition: windef.h:306
HICON HCURSOR
Definition: windef.h:299
DECLSPEC_HIDDEN void __thiscall ITextHostImpl_TxImmReleaseContext(ITextHost *iface, HIMC himc)
Definition: txthost.c:468
LONG right
Definition: windef.h:308
#define E_FAIL
Definition: ddrawi.h:102
int32_t INT
Definition: typedefs.h:58
Definition: send.c:48
DWORD WINAPI GetSysColor(_In_ int)
#define pch(ap)
Definition: match.c:418
DECLSPEC_HIDDEN void __thiscall ITextHostImpl_TxKillTimer(ITextHost *iface, UINT idTimer)
Definition: txthost.c:183
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetScrollBars(ITextHost *iface, DWORD *pdwScrollBar)
Definition: txthost.c:288
#define ES_PASSWORD
Definition: pedump.c:670
struct ITextHostImpl ITextHostImpl
#define EN_SAVECLIPBOARD
Definition: richedit.h:199
uint32_t cs
Definition: isohybrid.c:75
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxShowScrollBar(ITextHost *iface, INT fnBar, BOOL fShow)
Definition: txthost.c:118
#define EN_KILLFOCUS
Definition: winuser.h:2012
GLenum GLint GLuint mask
Definition: glext.h:6028
#define EN_SETFOCUS
Definition: winuser.h:2014
HWND WINAPI SetActiveWindow(_In_ HWND)
#define ES_RIGHT
Definition: pedump.c:666
BOOL WINAPI HideCaret(_In_opt_ HWND)
DECLSPEC_HIDDEN void __thiscall ITextHostImpl_TxSetCursor(ITextHost *iface, HCURSOR hcur, BOOL fText)
Definition: txthost.c:213
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
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetViewInset(ITextHost *iface, LPRECT prc)
Definition: txthost.c:250
HWND hWnd
Definition: txthost.c:37
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxCreateCaret(ITextHost *iface, HBITMAP hbmp, INT xWidth, INT yHeight)
Definition: txthost.c:156
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
#define EN_ERRSPACE
Definition: winuser.h:2010
#define TXTBIT_USEPASSWORD
Definition: textserv.h:190
#define TXTBIT_AUTOWORDSEL
Definition: textserv.h:193
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)
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetMaxLength(ITextHost *iface, DWORD *pLength)
Definition: txthost.c:282
#define ES_SELECTIONBAR
Definition: richedit.h:230
DECLSPEC_HIDDEN void __thiscall ITextHostImpl_TxViewChange(ITextHost *iface, BOOL fUpdate)
Definition: txthost.c:149
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
DECLSPEC_HIDDEN void __thiscall ITextHostImpl_TxInvalidateRect(ITextHost *iface, LPCRECT prc, BOOL fMode)
Definition: txthost.c:143
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxSetCaretPos(ITextHost *iface, INT x, INT y)
Definition: txthost.c:171
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
DECLSPEC_HIDDEN void __thiscall ITextHostImpl_TxScrollWindowEx(ITextHost *iface, INT dx, INT dy, LPCRECT lprcScroll, LPCRECT lprcClip, HRGN hRgnUpdate, LPRECT lprcUpdate, UINT fuScroll)
Definition: txthost.c:189
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxSetScrollPos(ITextHost *iface, INT fnBar, INT nPos, BOOL fRedraw)
Definition: txthost.c:137
HBITMAP hbmp
DECLSPEC_HIDDEN void __thiscall ITextHostImpl_TxSetCapture(ITextHost *iface, BOOL fCapture)
Definition: txthost.c:198
DECLSPEC_HIDDEN COLORREF __thiscall ITextHostImpl_TxGetSysColor(ITextHost *iface, int nIndex)
Definition: txthost.c:271
#define ES_AUTOVSCROLL
Definition: pedump.c:671
#define TXTBIT_SAVESELECTION
Definition: textserv.h:192
#define EN_DROPFILES
Definition: richedit.h:194
#define STDCALL
Definition: wdf.h:45
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define TXTBIT_HIDESELECTION
Definition: textserv.h:191
LONG HRESULT
Definition: typedefs.h:79
DWORD COLORREF
Definition: windef.h:300
HIMC WINAPI ImmGetContext(HWND hWnd)
Definition: imm.c:1010
const GUID IID_IUnknown
#define PFA_CENTER
Definition: richedit.h:923
DECLSPEC_HIDDEN INT __thiscall ITextHostImpl_TxReleaseDC(ITextHost *iface, HDC hdc)
Definition: txthost.c:112
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxScreenToClient(ITextHost *iface, LPPOINT lppt)
Definition: txthost.c:218
#define TXTBIT_WORDWRAP
Definition: textserv.h:196
#define WINAPI
Definition: msvc.h:6
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
ITextHost ITextHost_iface
Definition: txthost.c:35
unsigned long DWORD
Definition: ntddk_ex.h:95
#define TXTBIT_READONLY
Definition: textserv.h:188
PARAFORMAT2 para_fmt
Definition: txthost.c:39
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxActivate(ITextHost *iface, LONG *plOldState)
Definition: txthost.c:230
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
DECLSPEC_HIDDEN HIMC __thiscall ITextHostImpl_TxImmGetContext(ITextHost *iface)
Definition: txthost.c:462
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
int ret
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetExtent(ITextHost *iface, LPSIZEL lpExtent)
Definition: txthost.c:323
#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
#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:187
#define ES_SAVESEL
Definition: richedit.h:226
#define WM_COMMAND
Definition: winuser.h:1727
#define EN_HSCROLL
Definition: winuser.h:2011
#define TXTBIT_RICHTEXT
Definition: textserv.h:186
BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
Definition: imm.c:1051
#define EN_VSCROLL
Definition: winuser.h:2016
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxSetScrollRange(ITextHost *iface, INT fnBar, LONG nMinPos, INT nMaxPos, BOOL fRedraw)
Definition: txthost.c:130
#define TM_RICHTEXT
Definition: richedit.h:1029
#define GWL_STYLE
Definition: winuser.h:846
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxNotify(ITextHost *iface, DWORD iNotify, void *pv)
Definition: txthost.c:404
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI SetCapture(_In_ HWND hWnd)
#define S_OK
Definition: intsafe.h:52
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:197
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxSetTimer(ITextHost *iface, UINT idTimer, UINT uTimeout)
Definition: txthost.c:177
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxShowCaret(ITextHost *iface, BOOL fShow)
Definition: txthost.c:162
#define EN_LINK
Definition: richedit.h:202
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetParaFormat(ITextHost *iface, const PARAFORMAT **fmt)
Definition: txthost.c:264
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define E_NOTIMPL
Definition: ddrawi.h:99
static ULONG WINAPI ITextHostImpl_AddRef(ITextHost *iface)
Definition: txthost.c:86
DECLSPEC_HIDDEN HDC __thiscall ITextHostImpl_TxGetDC(ITextHost *iface)
Definition: txthost.c:106
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
#define WS_VSCROLL
Definition: pedump.c:627
DECLSPEC_HIDDEN BOOL __thiscall ITextHostImpl_TxEnableScrollBar(ITextHost *iface, INT fuSBFlags, INT fuArrowflags)
Definition: txthost.c:124
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint dx
Definition: linetemp.h:97
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetClientRect(ITextHost *iface, LPRECT prc)
Definition: txthost.c:243
BOOL WINAPI SetScrollRange(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ BOOL)
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetPasswordChar(ITextHost *iface, WCHAR *pch)
Definition: txthost.c:311
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2890
#define __thiscall
Definition: cpp.c:43
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetPropertyBits(ITextHost *iface, DWORD dwMask, DWORD *pdwBits)
Definition: txthost.c:338
#define PFA_LEFT
Definition: richedit.h:921
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetSelectionBarWidth(ITextHost *iface, LONG *lSelBarWidth)
Definition: txthost.c:474
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:2015
UINT cbSize
Definition: richedit.h:666
BOOL WINAPI ShowCaret(_In_opt_ HWND)
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetCharFormat(ITextHost *iface, const CHARFORMATW **ppCF)
Definition: txthost.c:259
#define EN_STOPNOUNDO
Definition: richedit.h:197
#define SetWindowLongPtrW
Definition: winuser.h:5326
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxDeactivate(ITextHost *iface, LONG lNewState)
Definition: txthost.c:237
static HBITMAP
Definition: button.c:44
#define EN_REQUESTRESIZE
Definition: richedit.h:192
BOOL WINAPI EnableScrollBar(_In_ HWND, _In_ UINT, _In_ UINT)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4022
static ULONG WINAPI ITextHostImpl_Release(ITextHost *iface)
Definition: txthost.c:93
#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:194
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:198
DECLSPEC_HIDDEN void __thiscall ITextHostImpl_TxSetFocus(ITextHost *iface)
Definition: txthost.c:207
#define HandleToLong(h)
Definition: basetsd.h:80
DECLSPEC_HIDDEN HRESULT __thiscall ITextHostImpl_TxGetBackStyle(ITextHost *iface, TXTBACKSTYLE *pStyle)
Definition: txthost.c:276
#define EN_CHANGE
Definition: winuser.h:2009