230#define NO_SHLWAPI_STREAM
244#define STACK_SIZE_DEFAULT 100
245#define STACK_SIZE_MAX 1000
247#define TEXT_LIMIT_DEFAULT 32767
300 static const char bom_utf8[] = {0xEF, 0xBB, 0xBF};
311 if (
stream->editstream->dwError)
315 total_bytes_read +=
stream->dwSize;
343 while ((
buf[
end-1] & 0xC0) == 0x80)
351 if ((
buf[
end-1] & 0xE0) == 0xC0)
353 if ((
buf[
end-1] & 0xF0) == 0xE0)
355 if ((
buf[
end-1] & 0xF8) == 0xF0)
387 nWideChars =
stream->dwSize >> 1;
396 return total_bytes_read;
408 for (
i = 0;
i < 4;
i++)
412 colorNum = borderDef[
i].
color;
413 while (colorDef && colorDef->
rtfCNum != colorNum)
432 switch(
info->rtfMinor)
450 fmt.dwEffects =
info->rtfParam ?
fmt.dwMask : 0;
478 fmt.dwEffects =
info->rtfParam ?
fmt.dwMask : 0;
492 fmt.dwEffects =
info->rtfParam ?
fmt.dwMask : 0;
497 if (
info->rtfParam == 0)
502 if (
c &&
c->rtfCBlue >= 0)
503 fmt.crBackColor = (
c->rtfCBlue<<16)|(
c->rtfCGreen<<8)|(
c->rtfCRed);
511 if (
info->rtfParam == 0)
516 if (
c &&
c->rtfCBlue >= 0)
517 fmt.crTextColor = (
c->rtfCBlue<<16)|(
c->rtfCGreen<<8)|(
c->rtfCRed);
531 fmt.bCharSet =
f->rtfFCharSet;
533 fmt.bPitchAndFamily =
f->rtfFPitch | (
f->rtfFFamily << 4);
540 fmt.yHeight =
info->rtfParam*10;
549 info->style = style2;
558 switch(
info->rtfMinor)
561 if (!
info->editor->bEmulateVersion10)
571 info->fmt.cTabCount = 0;
572 info->fmt.dxOffset =
info->fmt.dxStartIndent =
info->fmt.dxRightIndent = 0;
573 info->fmt.wBorderWidth =
info->fmt.wBorders = 0;
574 info->fmt.wBorderSpace = 0;
575 info->fmt.bLineSpacingRule = 0;
576 info->fmt.dySpaceBefore =
info->fmt.dySpaceAfter = 0;
577 info->fmt.dyLineSpacing = 0;
578 info->fmt.wEffects &= ~PFE_RTLPARA;
579 info->fmt.wNumbering = 0;
580 info->fmt.wNumberingStart = 0;
581 info->fmt.wNumberingStyle = 0;
582 info->fmt.wNumberingTab = 0;
584 if (!
info->editor->bEmulateVersion10)
586 if (
info->tableDef &&
info->tableDef->row_start &&
610 info->fmt.wEffects &= ~PFE_TABLE;
614 if (!
info->editor->bEmulateVersion10)
616 while (
info->rtfParam >
info->nestingLevel)
620 info->tableDef = tableDef;
637 info->nestingLevel++;
644 if (!
info->editor->bEmulateVersion10)
646 if (
info->nestingLevel < 1)
653 tableDef =
info->tableDef;
658 para =
info->editor->pCursors[0].para;
662 info->nestingLevel = 1;
680 info->fmt.dxStartIndent =
fmt.dxStartIndent;
681 info->fmt.dxOffset =
fmt.dxOffset;
685 info->fmt.dxStartIndent +=
info->fmt.dxOffset +
info->rtfParam;
686 info->fmt.dxOffset = -
info->rtfParam;
689 info->fmt.dxStartIndent =
info->rtfParam -
info->fmt.dxOffset;
693 info->fmt.dxRightIndent =
info->rtfParam;
715 fmt.cTabCount *
sizeof(
fmt.rgxTabs[0]));
716 info->fmt.cTabCount =
fmt.cTabCount;
720 info->fmt.rgxTabs[
info->fmt.cTabCount++] =
info->rtfParam;
736 info->fmt.dySpaceAfter =
info->rtfParam;
740 info->fmt.dySpaceBefore =
info->rtfParam;
744 if ((
int)
info->rtfParam > 0)
746 info->fmt.dyLineSpacing =
info->rtfParam;
747 info->fmt.bLineSpacingRule = 3;
751 info->fmt.dyLineSpacing =
info->rtfParam;
752 info->fmt.bLineSpacingRule = 4;
757 info->fmt.dyLineSpacing =
info->rtfParam * 20;
758 info->fmt.bLineSpacingRule = 5;
766 info->fmt.wNumbering = 2;
770 info->fmt.wBorders |= 1;
775 info->fmt.wBorders |= 2;
780 info->fmt.wBorders |= 4;
785 info->fmt.wBorders |= 8;
789 info->fmt.wBorders &= ~0x700;
790 info->fmt.wBorders |= 1 << 8;
794 info->fmt.wBorders &= ~0x700;
795 info->fmt.wBorders |= 2 << 8;
799 info->fmt.wBorders &= ~0x700;
800 info->fmt.wBorders |= 10 << 8;
804 info->fmt.wBorders &= ~0x700;
805 info->fmt.wBorders |= 7 << 8;
809 info->fmt.wBorders &= ~0x700;
810 info->fmt.wBorders |= 11 << 8;
826 info->fmt.wBorderWidth =
info->rtfParam;
831 info->fmt.wBorderSpace =
info->rtfParam;
842 if (!
info->editor->bEmulateVersion10)
864 info->fmt.wEffects &= ~PFE_RTLPARA;
871 switch (
info->rtfMinor)
875 if (!
info->editor->bEmulateVersion10)
876 info->borderType = 0;
879 if (!
info->tableDef) {
893 cellNum =
info->tableDef->numCellsDefined;
896 info->tableDef->cells[cellNum].rightBoundary =
info->rtfParam;
902 fmt->rgxTabs[cellNum] &= ~0x00FFFFFF;
903 fmt->rgxTabs[cellNum] |= 0x00FFFFFF &
info->rtfParam;
905 info->tableDef->numCellsDefined++;
934 info->tableDef->gapH =
info->rtfParam;
938 info->tableDef->leftEdge =
info->rtfParam;
946 switch (
info->rtfMinor)
949 if (
info->editor->bEmulateVersion10)
956 if (!
info->editor->bEmulateVersion10)
964 info->nestingLevel = 1;
982 if (
info->editor->bEmulateVersion10)
995 if (!
info->editor->bEmulateVersion10)
1002 info->nestingLevel++;
1011 const int default_size = 2000;
1012 int right_boundary = default_size;
1017 right_boundary += default_size;
1043 if (
info->editor->pCursors[0].run != run ||
info->editor->pCursors[0].nOffset)
1047 info->editor->pCursors[1].run = run;
1048 info->editor->pCursors[1].para = run->
para;
1049 info->editor->pCursors[1].nOffset = 0;
1060 info->nestingLevel--;
1061 if (!
info->nestingLevel)
1066 while (
info->tableDef)
1068 tableDef =
info->tableDef;
1082 para =
info->editor->pCursors[0].para;
1102 if (
info->editor->bEmulateVersion10)
1107 para =
info->editor->pCursors[0].para;
1112 info->rtfMajor =
' ';
1114 else if (
info->rtfMinor ==
rtfPar && tableDef)
1126 LPOLECLIENTSITE lpClientSite =
NULL;
1128 LPOLECACHE lpOleCache =
NULL;
1137 stgm.tymed = TYMED_ENHMF;
1138 stgm.hEnhMetaFile = hemf;
1143 stgm.tymed = TYMED_GDI;
1144 stgm.hBitmap =
hbmp;
1149 stgm.pUnkForRelease =
NULL;
1152 fm.dwAspect = DVASPECT_CONTENT;
1154 fm.tymed = stgm.tymed;
1157 IRichEditOle_GetClientSite(editor->
richole, &lpClientSite) ==
S_OK &&
1158 IOleObject_SetClientSite(lpObject, lpClientSite) ==
S_OK &&
1159 IOleObject_GetUserClassID(lpObject, &
clsid) ==
S_OK &&
1160 IOleObject_QueryInterface(lpObject, &
IID_IOleCache, (
void**)&lpOleCache) ==
S_OK &&
1161 IOleCache_Cache(lpOleCache, &fm, 0, &conn) ==
S_OK &&
1163 IDataObject_SetData(lpDataObject, &fm, &stgm,
TRUE) ==
S_OK)
1167 reobject.
cbStruct =
sizeof(reobject);
1168 reobject.
cp = REO_CP_SELECTION;
1171 reobject.
pstg = lpStorage;
1176 reobject.
dvaspect = DVASPECT_CONTENT;
1183 if (lpObject) IOleObject_Release(lpObject);
1184 if (lpClientSite) IOleClientSite_Release(lpClientSite);
1185 if (lpStorage) IStorage_Release(lpStorage);
1186 if (lpDataObject) IDataObject_Release(lpDataObject);
1187 if (lpOleCache) IOleCache_Release(lpOleCache);
1203 if (--
level == 0)
break;
1231 ERR(
"Called with incorrect token\n");
1239 for (flip =
TRUE;; flip = !flip)
1261 if (flip)
FIXME(
"wrong hex string\n");
1275 enum gfxkind {gfx_unknown = 0, gfx_enhmetafile, gfx_metafile, gfx_dib} gfx = gfx_unknown;
1302 if (--
level == 0)
break;
1325 if (
info->rtfParam != 0)
FIXME(
"dibitmap should be 0 (%d)\n",
info->rtfParam);
1329 gfx = gfx_enhmetafile;
1339 FIXME(
"Non supported attribute: %d %d %d\n",
info->rtfClass,
info->rtfMajor,
info->rtfMinor);
1346 case gfx_enhmetafile:
1413 FIXME(
"Non supported attribute: %d %d %d\n",
info->rtfClass,
info->rtfMajor,
info->rtfMinor);
1424 WCHAR txt_before = 0, txt_after = 0;
1433 int loc =
info->rtfMinor;
1439 txt_before =
info->rtfMajor;
1441 txt_after =
info->rtfMajor;
1452 if (--
level == 0)
break;
1466 switch (
info->rtfMinor)
1508 if (txt_before == 0 && txt_after == 0)
1510 else if (txt_after ==
'.')
1512 else if (txt_before ==
'(' && txt_after ==
')')
1518 TRACE(
"type %d indent %d start %d txt before %04x txt after %04x\n",
1526 switch(
info->rtfClass)
1529 switch(
info->rtfMajor)
1536 info->stack[
info->stackTop].unicodeLength =
info->unicodeLength;
1545 if (
info->stackTop <= 0)
1547 if (
info->stackTop < 0)
1553 info->unicodeLength =
info->stack[
info->stackTop].unicodeLength;
1564 stream->editstream->dwError =
stream->editstream->pfnCallback(
stream->editstream->dwCookie,
1681 if (!
parser.editor->bEmulateVersion10)
1705 if (
parser.nestingLevel > 0)
1707 while (
parser.nestingLevel > 1)
1709 para =
parser.tableDef->row_start;
1714 para =
parser.tableDef->row_start;
1733 while (--
parser.stackTop >= 0)
1751 WCHAR lastchar[3] = {
'\0',
'\0'};
1753 ME_Cursor linebreakCursor = *selEnd, lastcharCursor = *selEnd;
1757 cf.cbSize =
sizeof(
cf);
1767 if (lastchar[0] ==
'\r' && (lastchar[1] ==
'\n' || lastchar[1] ==
'\0')) {
1773 num_read = to -
from;
1783 ERR(
"EM_STREAMIN without SF_TEXT or SF_RTF\n");
1855 WCHAR wLastChar =
' ';
1857 TRACE(
"flags==0x%08lx, chrg->cpMin==%ld, chrg->cpMax==%ld text==%s\n",
1861 FIXME(
"Flags 0x%08lx not implemented\n",
1865 if (chrg->
cpMax == -1)
1868 nMax = chrg->
cpMax > nTextLen ? nTextLen : chrg->
cpMax;
1881 chrgText->
cpMin = -1;
1882 chrgText->
cpMax = -1;
1896 nMax = nMin > nTextLen ? nTextLen : nMin;
1897 if (nMin < nSwap || chrg->cpMax == -1)
1903 if (!nLen || nMin < 0 || nMax < 0 || nMax < nMin)
1924 int nCurStart =
cursor.nOffset;
1933 if (nMatched == nLen)
1936 int nNextStart = nCurStart;
1942 if (nCurStart + nMatched == run->
len)
1945 nNextStart = -nMatched;
1949 wNextChar = *
get_text( next_run, nNextStart + nMatched );
1966 if (nCurStart + nMatched == run->
len)
1969 nCurStart = -nMatched;
1973 wLastChar = *
get_text( run, nCurStart + nMatched );
2006 int nCurEnd =
cursor.nOffset;
2023 if (nMatched == nLen)
2026 int nPrevEnd = nCurEnd;
2033 if (nPrevEnd - nMatched == 0)
2036 if (prev_run) nPrevEnd = prev_run->
len + nMatched;
2039 if (prev_run) wPrevChar = *
get_text( prev_run, nPrevEnd - nMatched - 1 );
2040 else wPrevChar =
' ';
2049 chrgText->
cpMin = nStart;
2050 chrgText->
cpMax = nStart + nLen;
2052 TRACE(
"found at %d-%d\n", nStart, nStart + nLen);
2055 if (nCurEnd - nMatched == 0)
2064 nCurEnd = run->
len + nMatched;
2068 wLastChar = *
get_text( run, nCurEnd - nMatched - 1 );
2086 TRACE(
"not found\n");
2097 if (!
ex->cb || !
pText)
return 0;
2131 buflen =
min(crlfmul * nChars,
ex->cb - 1);
2181 pDest = (
WORD *)lpBuff;
2183 for (
i = 0;
i<
cb && pSrc[
pData->nLength+
i];
i++) {
2184 pDest[
i] = pSrc[
pData->nLength+
i];
2200 for (
i = 0;
i<
cb && pSrc[
pData->nLength+
i];
i++) {
2201 pDest[
i] = pSrc[
pData->nLength+
i];
2215 gds.
hData = med->hGlobal;
2230 gds.
hData = med->hGlobal;
2263 {{ -1,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL },
paste_rtf,
L"Rich Text Format" },
2301 if (ps && ps->
dwAspect != DVASPECT_CONTENT)
2312 if (
cf &&
cf !=
format->fmt.cfFormat)
continue;
2319 if (
hr !=
S_OK)
goto done;
2327 IDataObject_Release(
data );
2355 IDataObject_Release(
data );
2409 start_para =
from->para;
2415 start.para = start_para;
2465 para->
nFlags &= ~MEPF_ROWSTART;
2590 ME_ArrowKey(editor, nKey, shift_is_down, ctrl_is_down);
2612 BOOL bDeletionSucceeded;
2675 chf.
cbSize =
sizeof(chf);
2704 if ((
unsigned)wstr >=
' ' || wstr ==
'\t')
2722 selected_row =
TRUE;
2779 static int clickNum = 0;
2786 (
msg == WM_XBUTTONDBLCLK))
2794 (
msg == WM_XBUTTONDOWN))
2796 static MSG prevClickMsg;
2800 clickMsg.hwnd = (
HWND)editor;
2801 clickMsg.message =
msg;
2802 clickMsg.wParam =
wParam;
2803 clickMsg.lParam =
lParam;
2807 if ((clickNum != 0) &&
2808 (clickMsg.message == prevClickMsg.message) &&
2809 (clickMsg.hwnd == prevClickMsg.hwnd) &&
2810 (clickMsg.wParam == prevClickMsg.wParam) &&
2819 prevClickMsg = clickMsg;
2834 static HCURSOR cursor_arrow, cursor_hand, cursor_ibeam, cursor_reverse;
2848 (!editor->
bEmulateVersion10 && y < editor->rcFormat.top && x < editor->rcFormat.left))
2853 else cursor = cursor_ibeam;
2855 else if (x < editor->rcFormat.left)
cursor = cursor_reverse;
2868 if (start <= offset && end >=
offset)
cursor = cursor_arrow;
2947 ITextHost_Release( texthost );
2952 ed->
texthost = (ITextHost2 *)texthost;
3129 *remain -=
WHEEL_DELTA * change / amount_per_click;
3147 info.nmhdr.idFrom = 0;
3255#define UNSUPPORTED_MSG(e) \
3257 FIXME(#e ": stub\n"); \
3258 *phresult = S_FALSE; \
3312 if ((*pfrom|*pto) & 0xFFFF0000)
3353 cf.cbSize =
sizeof(
cf);
3356 tmp_size = (
cf.yHeight / 20) +
wParam;
3360 else if (tmp_size > 12 && tmp_size < 28 && tmp_size % 2)
3361 size = tmp_size + (is_increase ? 1 : -1);
3362 else if (tmp_size > 28 && tmp_size < 36)
3363 size = is_increase ? 36 : 28;
3364 else if (tmp_size > 36 && tmp_size < 48)
3365 size = is_increase ? 48 : 36;
3366 else if (tmp_size > 48 && tmp_size < 72)
3367 size = is_increase ? 72 : 48;
3368 else if (tmp_size > 72 && tmp_size < 80)
3369 size = is_increase ? 80 : 72;
3370 else if (tmp_size > 80 && tmp_size < 1638)
3371 size = 10 * (is_increase ? (tmp_size / 10 + 1) : (tmp_size / 10));
3372 else if (tmp_size >= 1638)
3421 BOOL bRtf, bUnicode, bSelection, bUTF8;
3423 static const char utf8_bom[] = {0xef, 0xbb, 0xbf};
3425 if (!pStruct)
return 0;
3434 TRACE(
"EM_SETTEXTEX - %s, flags %ld, cp %d\n",
3458 if (bUTF8 && !bUnicode) {
3519 tmp.
cbSize =
sizeof(tmp);
3547 if (y < para->
pt.y + para->
nHeight)
break;
3555 if (y < para->
pt.y +
row->pt.y +
row->nHeight)
break;
3652 TRACE(
"WM_SETTEXT - NULL\n");
3724 TRACE(
"EM_GETTEXTRANGE min = %ld max = %ld textlength = %d\n", rng->
chrg.
cpMin, rng->
chrg.
cpMax, textlength );
3725 if (nStart < 0)
return 0;
3726 if ((nStart == 0 && nEnd == -1) || nEnd > textlength)
3728 if (nStart >= nEnd)
return 0;
3737 const unsigned int nMaxChars = *(
WORD *)
lParam;
3738 unsigned int nCharsLeft = nMaxChars;
3742 TRACE(
"EM_GETLINE: row=%d, nMaxChars=%d\n", (
int)
wParam, nMaxChars );
3754 int ofs = (run ==
start.run) ?
start.nOffset : 0;
3758 nCopy =
min( nCharsLeft,
len );
3762 nCharsLeft -= nCopy;
3763 if (run ==
end.run)
break;
3768 if (nCharsLeft > 0) *((
WCHAR *)
dest) =
'\0';
3770 TRACE(
"EM_GETLINE: got %u characters\n", nMaxChars - nCharsLeft);
3771 return nMaxChars - nCharsLeft;
3776 ME_Run *prev_run, *last_run;
3782 prev_run->
len == 1 && *
get_text( prev_run, 0 ) ==
'\r')
3791 TRACE(
"EM_GETLINECOUNT: count==%d\n",
count);
3812 if (!
row)
return -1;
3816 TRACE(
"EM_LINEINDEX: nCharOfs==%d\n", ofs );
3822 int start_ofs, end_ofs;
3829 FIXME(
"EM_LINELENGTH: returning number of unselected characters on lines with selection unsupported.\n");
3838 TRACE(
"EM_LINELENGTH(%Id)==%d\n",
wParam, end_ofs - start_ofs );
3839 return end_ofs - start_ofs;
3903 nCharOfs =
max(nCharOfs, 0);
3988 if (
wParam <= 0x000fffff)
4005 const int scrollUnit = 7;
4080 return 0x00010000 | (((editor->
vert_si.
nPos - origNPos)/lineHeight) & 0xffff);
4085 int delta = GET_WHEEL_DELTA_WPARAM(
wParam );
4089 if ((delta < 0 && editor->wheel_remain < 0) ||
4106 if (numerator >= 10 && numerator <= 500)
4131 lParam &= ~ISC_SHOWUICOMPOSITIONWINDOW;
4160 case WM_IME_STARTCOMPOSITION:
4172 case WM_IME_COMPOSITION:
4215 case WM_IME_ENDCOMPOSITION:
4226 IRichEditOle_AddRef( editor->
richole );
4247 return editor->
mode;
4302 FIXME(
"EM_SETTARGETDEVICE doesn't use non-NULL target devices\n");
4343 while (srcChars && buflen && next_run)
4347 if (buflen == 1)
break;
4351 srcChars -=
min(nLen, srcChars);
4357 nLen =
min(nLen, srcChars);
4361 nLen =
min(nLen, buflen);
4394 static const WCHAR neutral_chars[] =
L"!\"'(),-.:;<>?[]{}";
4423 int run_len =
cursor.run->len;
4425 nChars -= run_len -
cursor.nOffset;
4428 if (!candidateStarted)
4430 while (
cursor.nOffset < run_len)
4436 candidateStarted =
TRUE;
4437 neutral_end.para =
NULL;
4438 space_end.para =
NULL;
4442 quoted = (
c ==
'<');
4448 if (candidateStarted)
4450 while (
cursor.nOffset < run_len)
4455 if (quoted &&
c !=
'\r')
4457 if (!space_end.para)
4459 if (neutral_end.para)
4460 space_end = neutral_end;
4470 if (quoted &&
c ==
'>')
4472 neutral_end.para =
NULL;
4473 space_end.para =
NULL;
4476 if (!neutral_end.para)
4480 neutral_end.para =
NULL;
4492 if (candidateStarted)
4495 *candidate_max = space_end;
4496 else if (neutral_end.para)
4497 *candidate_max = neutral_end;
4502 *candidate_max = *candidate_min =
cursor;
4511#define MAX_PREFIX_LEN 9
4512#define X(str) str, ARRAY_SIZE(str) - 1
4546#undef MAX_PREFIX_LEN
4575 &candidateStart, &candidateEnd))
4582 candidateStart = candidateEnd;
4591 if (startCur.
run != candidateStart.
run ||
4616 if (candidateStart.
run != candidateEnd.
run ||
4633 startCur = candidateEnd;
4634 }
while (nChars > 0);
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static int list_empty(struct list_entry *head)
static void list_init(struct list_entry *head)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
_In_ size_t character_count
static const WCHAR indent[]
#define WideCharToMultiByte
#define MultiByteToWideChar
static const char bom_utf8[]
HRESULT WINAPI OleSetClipboard(IDataObject *data)
HRESULT WINAPI OleGetClipboard(IDataObject **obj)
HRESULT WINAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
void ME_InsertEndRowFromCursor(ME_TextEditor *editor, int nCursor)
void ME_SetCursorToStart(ME_TextEditor *editor, ME_Cursor *cursor)
BOOL ME_DeleteTextAtCursor(ME_TextEditor *editor, int nCursor, int nChars)
BOOL ME_IsSelection(ME_TextEditor *editor)
void ME_DeleteSelection(ME_TextEditor *editor)
int ME_GetCursorOfs(const ME_Cursor *cursor)
void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor, const WCHAR *str, int len, ME_Style *style)
int ME_MoveCursorChars(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs, BOOL final_eop)
BOOL ME_MoveCursorWords(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs)
void ME_LButtonDown(ME_TextEditor *editor, int x, int y, int clickNum)
int ME_GetTextLengthEx(ME_TextEditor *editor, const GETTEXTLENGTHEX *how)
BOOL cursor_from_coords(ME_TextEditor *editor, int x, int y, ME_Cursor *cursor)
int ME_GetSelection(ME_TextEditor *editor, ME_Cursor **from, ME_Cursor **to)
BOOL ME_InternalDeleteText(ME_TextEditor *editor, ME_Cursor *start, int nChars, BOOL bForce)
void hide_caret(ME_TextEditor *editor)
void ME_MouseMove(ME_TextEditor *editor, int x, int y)
HRESULT editor_insert_oleobj(ME_TextEditor *editor, const REOBJECT *reo)
void ME_SendSelChange(ME_TextEditor *editor)
int set_selection_cursors(ME_TextEditor *editor, int from, int to)
int ME_GetSelectionOfs(ME_TextEditor *editor, LONG *from, LONG *to)
BOOL ME_ArrowKey(ME_TextEditor *editor, int nVKey, BOOL extend, BOOL ctrl)
void create_caret(ME_TextEditor *editor)
int ME_GetTextLength(ME_TextEditor *editor)
void update_caret(ME_TextEditor *editor)
ME_Style * ME_GetSelectionInsertStyle(ME_TextEditor *editor)
HRESULT ME_GetDataObject(ME_TextEditor *editor, const ME_Cursor *start, int nChars, IDataObject **dataobj)
static struct paste_format paste_formats[]
static void ME_StreamInRTFString(ME_TextEditor *editor, BOOL selection, char *string)
static void ME_RTFReadParnumGroup(RTF_Info *info)
static BOOL paste_special(ME_TextEditor *editor, UINT cf, REPASTESPECIAL *ps, BOOL check_only)
#define UNSUPPORTED_MSG(e)
static int ME_FindText(ME_TextEditor *editor, DWORD flags, const CHARRANGE *chrg, const WCHAR *text, CHARRANGE *chrgText)
static HRESULT insert_static_object(ME_TextEditor *editor, HENHMETAFILE hemf, HBITMAP hbmp, const SIZEL *sz)
static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stream, BOOL stripLastCR)
static void ME_RTFReadShpPictGroup(RTF_Info *info)
static void ME_SetText(ME_TextEditor *editor, void *text, BOOL unicode)
static HRESULT paste_emf(ME_TextEditor *editor, FORMATETC *fmt, STGMEDIUM *med)
void ME_ReplaceSel(ME_TextEditor *editor, BOOL can_undo, const WCHAR *str, int len)
static void ME_UpdateSelectionLinkAttribute(ME_TextEditor *editor)
static DWORD CALLBACK ME_ReadFromHGLOBALRTF(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb)
struct tagME_RTFStringStreamStruct ME_RTFStringStreamStruct
ME_Paragraph * editor_first_para(ME_TextEditor *editor)
static BOOL ME_IsCandidateAnURL(ME_TextEditor *editor, const ME_Cursor *start, int nChars)
static DWORD CALLBACK ME_ReadFromHGLOBALUnicode(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb)
static BOOL ME_ShowContextMenu(ME_TextEditor *editor, int x, int y)
static BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, const ME_Cursor *start, int nChars, ME_Cursor *candidate_min, ME_Cursor *candidate_max)
static BOOL editor_beep(ME_TextEditor *editor, UINT type)
void ME_StreamInFill(ME_InStream *stream)
static void ME_RTFReadHook(RTF_Info *info)
static LRESULT handle_EM_SETCHARFORMAT(ME_TextEditor *editor, WPARAM flags, const CHARFORMAT2W *fmt_in)
static int ME_GetTextEx(ME_TextEditor *editor, GETTEXTEX *ex, LPARAM pText)
static HRESULT paste_rtf(ME_TextEditor *editor, FORMATETC *fmt, STGMEDIUM *med)
static int calc_wheel_change(int *remain, int amount_per_click)
void ME_RTFTblAttrHook(RTF_Info *info)
ME_TextEditor * ME_MakeEditor(ITextHost *texthost, BOOL bEmulateVersion10)
static ME_TextBuffer * ME_MakeText(void)
static int get_text_range(ME_TextEditor *editor, WCHAR *buffer, const ME_Cursor *start, int len)
#define STACK_SIZE_DEFAULT
static BOOL copy_or_cut(ME_TextEditor *editor, BOOL cut)
void ME_RTFCharAttrHook(RTF_Info *info)
static int get_default_line_height(ME_TextEditor *editor)
static HRESULT paste_text(ME_TextEditor *editor, FORMATETC *fmt, STGMEDIUM *med)
static void init_paste_formats(void)
HRESULT editor_copy_or_cut(ME_TextEditor *editor, BOOL cut, ME_Cursor *start, int count, IDataObject **data_out)
static void ME_ApplyBorderProperties(RTF_Info *info, ME_BorderRect *borderRect, RTFBorder *borderDef)
#define TEXT_LIMIT_DEFAULT
static BOOL isurlneutral(WCHAR c)
static void ME_RTFReadPictGroup(RTF_Info *info)
static LONG ME_GetSelectionType(ME_TextEditor *editor)
void editor_set_cursor(ME_TextEditor *editor, int x, int y)
struct tagME_GlobalDestStruct ME_GlobalDestStruct
static BOOL ME_UpdateLinkAttribute(ME_TextEditor *editor, ME_Cursor *start, int nChars)
void ME_RTFSpecialCharHook(RTF_Info *info)
static DWORD CALLBACK ME_ReadFromRTFString(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb)
int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int buflen, const ME_Cursor *start, int srcChars, BOOL bCRLF, BOOL bEOP)
static BOOL is_link(ME_Run *run)
void ME_RTFParAttrHook(RTF_Info *info)
LRESULT editor_handle_message(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam, HRESULT *phresult)
static void ME_RTFReadObjectGroup(RTF_Info *info)
static LRESULT handle_wm_char(ME_TextEditor *editor, WCHAR wstr, LPARAM flags)
void ME_DestroyEditor(ME_TextEditor *editor)
static int __cdecl wchar_comp(const void *key, const void *elem)
static BOOL ME_KeyDown(ME_TextEditor *editor, WORD nKey)
static HRESULT editor_copy(ME_TextEditor *editor, ME_Cursor *start, int chars, IDataObject **data_out)
static LRESULT ME_StreamInText(ME_TextEditor *editor, DWORD dwFormat, ME_InStream *stream, ME_Style *style)
static DWORD read_hex_data(RTF_Info *info, BYTE **out)
void link_notify(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam)
ME_Paragraph * editor_end_para(ME_TextEditor *editor)
static BOOL handle_enter(ME_TextEditor *editor)
static int ME_CalculateClickCount(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam)
int RTFCheckCM(const RTF_Info *info, int class, int major)
void RTFDestroy(RTF_Info *info)
void RTFSetEditStream(RTF_Info *info, ME_InStream *stream)
int BeginFile(RTF_Info *info)
int RTFGetToken(RTF_Info *info)
void RTFRead(RTF_Info *info)
RTFFont * RTFGetFont(const RTF_Info *info, int num)
void RTFRouteToken(RTF_Info *info)
void RTFInit(RTF_Info *info)
int RTFCheckMM(const RTF_Info *info, int major, int minor)
void RTFFlushOutputBuffer(RTF_Info *info)
RTFColor * RTFGetColor(const RTF_Info *info, int num)
void RTFSetReadHook(RTF_Info *info, RTFFuncPtr f)
void RTFSkipGroup(RTF_Info *info)
void RTFSetDestinationCallback(RTF_Info *info, int dest, RTFFuncPtr callback)
int RTFCheckCMM(const RTF_Info *info, int class, int major, int minor)
void WriterInit(RTF_Info *info)
void RTFReadGroup(RTF_Info *info)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
void ME_InvalidateSelection(ME_TextEditor *editor)
void ME_RewrapRepaint(ME_TextEditor *editor)
#define ITextHost_TxSetScrollRange(This, a, b, c, d)
ME_Row * para_first_row(ME_Paragraph *para)
#define ITextHost_TxSetFocus(This)
ME_Run * run_next(ME_Run *run)
void ME_ScrollRight(ME_TextEditor *editor, int cx)
void editor_get_selection_para_fmt(ME_TextEditor *editor, PARAFORMAT2 *fmt)
void ME_AddRefStyle(ME_Style *item)
void editor_set_default_para_fmt(ME_TextEditor *editor, PARAFORMAT2 *pFmt)
void table_handle_tab(ME_TextEditor *editor, BOOL selected_row)
void ME_ScrollLeft(ME_TextEditor *editor, int cx)
ME_Style * style_get_insert_style(ME_TextEditor *editor, ME_Cursor *cursor)
static int ME_CharCompare(WCHAR a, WCHAR b, int caseSensitive)
ME_Paragraph * cell_first_para(ME_Cell *cell)
ME_Cell * cell_next(ME_Cell *cell)
#define ITextHost_TxGetPropertyBits(This, a, b)
void ME_SetCharFormat(ME_TextEditor *editor, ME_Cursor *start, ME_Cursor *end, CHARFORMAT2W *pFmt)
void ME_ReleaseStyle(ME_Style *item)
void ME_ContinueCoalescingTransaction(ME_TextEditor *editor)
#define ITextHost_TxImmReleaseContext(This, a)
BOOL ME_SetZoom(ME_TextEditor *editor, int numerator, int denominator)
void para_destroy(ME_TextEditor *editor, ME_Paragraph *item)
ME_Cell * cell_prev(ME_Cell *cell)
#define ITextHost_TxGetBackStyle(This, a)
BOOL cursor_next_run(ME_Cursor *cursor, BOOL all_para)
ME_Row * row_from_cursor(ME_Cursor *cursor)
void ME_UpdateScrollBar(ME_TextEditor *editor)
int row_number_from_char_ofs(ME_TextEditor *editor, int ofs)
void ME_CommitUndo(ME_TextEditor *editor)
void ME_CommitCoalescingUndo(ME_TextEditor *editor)
void ME_EndToUnicode(LONG codepage, LPVOID psz)
void ME_Repaint(ME_TextEditor *editor)
BOOL cfany_to_cf2w(CHARFORMAT2W *to, const CHARFORMAT2W *from)
void ME_SaveTempStyle(ME_TextEditor *editor, ME_Style *style)
ME_Run * run_prev(ME_Run *run)
void scroll_h_abs(ME_TextEditor *editor, int x, BOOL notify)
BOOL ME_Undo(ME_TextEditor *editor)
BOOL ME_WrapMarkedParagraphs(ME_TextEditor *editor)
#define ITextHost_TxSetCapture(This, a)
ME_Style * ME_ApplyStyle(ME_TextEditor *ed, ME_Style *sSrc, CHARFORMAT2W *style)
ME_Paragraph * table_insert_row_end(ME_TextEditor *editor, ME_Cursor *cursor)
void row_first_cursor(ME_Row *row, ME_Cursor *cursor)
#define ITextHost_TxNotify(This, a, b)
void ME_DumpStyleToBuf(CHARFORMAT2W *pFmt, char buf[2048])
void ME_UpdateRepaint(ME_TextEditor *editor, BOOL update_now)
void ME_SendRequestResize(ME_TextEditor *editor, BOOL force)
ME_Run * para_end_run(ME_Paragraph *para)
void ME_ScrollDown(ME_TextEditor *editor, int cy)
void editor_enable_undo(ME_TextEditor *editor)
BOOL wrap_marked_paras_dc(ME_TextEditor *editor, HDC hdc, BOOL invalidate)
ME_Cell * table_row_first_cell(ME_Paragraph *para)
ME_Paragraph * table_insert_row_start(ME_TextEditor *editor, ME_Cursor *cursor)
ME_Cell * para_cell(ME_Paragraph *para)
void ME_GetCharFormat(ME_TextEditor *editor, const ME_Cursor *from, const ME_Cursor *to, CHARFORMAT2W *pFmt)
ME_Paragraph * table_insert_cell(ME_TextEditor *editor, ME_Cursor *cursor)
BOOL editor_set_selection_para_fmt(ME_TextEditor *editor, const PARAFORMAT2 *fmt)
#define ITextHost_TxGetDC(This)
ME_Paragraph * table_append_row(ME_TextEditor *editor, ME_Paragraph *table_row)
BOOL ME_Redo(ME_TextEditor *editor)
ME_Paragraph * table_insert_row_start_at_para(ME_TextEditor *editor, ME_Paragraph *para)
ME_Run * run_prev_all_paras(ME_Run *run)
void ME_CharFormatFromLogFont(HDC hDC, const LOGFONTW *lf, CHARFORMAT2W *fmt)
void scroll_v_abs(ME_TextEditor *editor, int y, BOOL notify)
BOOL cf2w_to_cfany(CHARFORMAT2W *to, const CHARFORMAT2W *from)
#define ITextHost_TxGetScrollBars(This, a)
BOOL para_in_table(ME_Paragraph *para)
int ME_PointFromChar(ME_TextEditor *editor, ME_Run *pRun, int nOffset, BOOL visual_order)
void row_end_cursor(ME_Row *row, ME_Cursor *cursor, BOOL include_eop)
#define ITextHost_TxGetSelectionBarWidth(This, a)
ME_Run * row_next_run(ME_Row *row, ME_Run *run)
void table_move_from_row_start(ME_TextEditor *editor)
#define ITextHost_TxGetPasswordChar(This, a)
LRESULT ME_StreamOut(ME_TextEditor *editor, DWORD dwFormat, EDITSTREAM *stream)
#define ITextHost_TxReleaseDC(This, a)
#define ITextHost2_TxGetWindow(This, a)
void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod)
void editor_mark_rewrap_all(ME_TextEditor *editor)
#define ITextHost_TxSetCursor(This, a, b)
void para_mark_rewrap(ME_TextEditor *editor, ME_Paragraph *para)
void ME_MakeFirstParagraph(ME_TextEditor *editor, HDC hdc)
#define ITextHost_TxEnableScrollBar(This, a, b)
ME_Run * para_first_run(ME_Paragraph *para)
#define ITextHost_TxImmGetContext(This)
void cursor_from_char_ofs(ME_TextEditor *editor, int char_ofs, ME_Cursor *cursor)
void ME_SetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt)
ME_Paragraph * para_prev(ME_Paragraph *para)
void ME_ClearTempStyle(ME_TextEditor *editor)
ME_Row * row_next(ME_Row *row)
struct RTFTable * ME_MakeTableDef(ME_TextEditor *editor)
void ME_ScrollUp(ME_TextEditor *editor, int cy)
void ME_EmptyUndoStack(ME_TextEditor *editor)
static WCHAR * get_text(const ME_Run *run, int offset)
void ME_GetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt)
void ME_DestroyDisplayItem(ME_DisplayItem *item)
void ME_CheckCharOffsets(ME_TextEditor *editor)
void ME_InitTableDef(ME_TextEditor *editor, struct RTFTable *tableDef)
void scroll_abs(ME_TextEditor *editor, int x, int y, BOOL notify)
ME_Paragraph * para_next(ME_Paragraph *para)
void ME_DestroyStyle(ME_Style *item)
ME_Row * row_from_row_number(ME_TextEditor *editor, int row_num)
LPWSTR ME_ToUnicode(LONG codepage, LPVOID psz, INT *len)
ME_Run * run_next_all_paras(ME_Run *run)
void editor_ensure_visible(ME_TextEditor *editor, ME_Cursor *cursor)
ME_DisplayItem * ME_MakeDI(ME_DIType type)
void ME_GetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt)
#define STREAMIN_BUFFER_SIZE
#define SELECTIONBAR_WIDTH
GLint GLint GLsizei GLsizei GLsizei GLint border
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
BOOL WINAPI ImmSetCompositionFontW(_In_ HIMC hIMC, _In_ LPLOGFONTW lplf)
struct INPUTCONTEXTDX * LPINPUTCONTEXTDX
HIMC WINAPI ImmGetContext(_In_ HWND hWnd)
BOOL WINAPI ImmReleaseContext(_In_ HWND hWnd, _In_ HIMC hIMC)
LONG WINAPI ImmGetCompositionStringW(_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_writes_bytes_opt_(dwBufLen) LPVOID lpBuf, _In_ DWORD dwBufLen)
BOOL WINAPI ImmIsIME(_In_ HKL hKL)
BOOL WINAPI ImmNotifyIME(_In_ HIMC hIMC, _In_ DWORD dwAction, _In_ DWORD dwIndex, _In_ DWORD_PTR dwValue)
LPINPUTCONTEXT WINAPI ImmLockIMC(_In_ HIMC hIMC)
#define NI_COMPOSITIONSTR
BOOL WINAPI ImmUnlockIMC(_In_ HIMC hIMC)
_Check_return_ _CRTIMP int __cdecl isalnum(_In_ int _C)
JSAMPARRAY JDIMENSION max_lines
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static HMODULE MODULEINFO DWORD cb
static float(__cdecl *square_half_float)(float x
static UINT PSTR DWORD UINT * need
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define set_selection(hctl, start, end)
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
interface IStorage * LPSTORAGE
interface IDataObject * LPDATAOBJECT
const GUID IID_IDataObject
const GUID IID_IOleObject
#define TM_MULTILEVELUNDO
#define EM_GETAUTOURLDETECT
#define CFU_UNDERLINEDOUBLE
#define EM_SETOLECALLBACK
#define EM_SETBIDIOPTIONS
#define PFE_NOWIDOWCONTROL
#define PFM_NUMBERINGSTYLE
#define CFU_UNDERLINEWORD
#define EM_GETWORDBREAKPROCEX
#define EM_GETBIDIOPTIONS
#define TM_SINGLECODEPAGE
struct _charformatw CHARFORMATW
#define EM_GETLANGOPTIONS
#define EM_SETWORDBREAKPROCEX
#define EM_SETLANGOPTIONS
#define ES_DISABLENOSCROLL
#define PFM_NOWIDOWCONTROL
#define CFE_AUTOBACKCOLOR
#define EM_STOPGROUPTYPING
#define EM_SETTYPOGRAPHYOPTIONS
#define EM_GETTEXTLENGTHEX
#define EM_SETTARGETDEVICE
struct _charformat2w CHARFORMAT2W
#define CFM_UNDERLINETYPE
#define EM_EXLINEFROMCHAR
#define EM_GETIMECOMPMODE
#define EM_GETOLEINTERFACE
#define CFU_UNDERLINEDOTTED
#define TM_SINGLELEVELUNDO
#define EM_GETTYPOGRAPHYOPTIONS
#define PFM_NUMBERINGSTART
#define rtfSuperScrShrink
#define rtfParNumTextBefore
#define RTFBorderTypeMask
#define rtfNoWidowControl
#define rtfParNumTextAfter
#define RTFBorderParaRight
#define rtfNestTableProps
#define rtfCellBordBottom
#define RTFBorderCellRight
#define RTFBorderSideMask
#define RTFBorderCellLeft
#define RTFBorderRowBottom
#define RTFBorderParaBottom
#define RTFBorderTypePara
#define RTFBorderTypeCell
#define RTFBorderParaLeft
#define RTFBorderRowRight
#define RTFBorderCellBottom
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
RTFCell cells[MAX_TABLE_CELLS]
enum parser_state stack[4]
BITMAPINFOHEADER bmiHeader
union tagME_DisplayItem::@595 member
struct tagME_DisplayItem * prev
struct tagME_DisplayItem * next
char buffer[STREAMIN_BUFFER_SIZE]
struct tagME_DisplayItem * next_para
struct tagME_DisplayItem * prev_para
struct tagME_Paragraph * para
unsigned int horz_sb_enabled
unsigned int have_texthost2
EDITWORDBREAKPROCW pfnWordBreak
ME_FontCacheItem pFontCache[HFONT_CACHE_SIZE]
unsigned int vert_sb_enabled
ME_Paragraph * last_sel_end_para
ME_UndoControlState undo_ctl_state
ME_Paragraph * last_sel_start_para
ME_SelectionType nSelectionType
BOOL AutoURLDetect_bEnable
LPRICHEDITOLECALLBACK lpOleCallback
unsigned int bEmulateVersion10
unsigned int in_place_active
#define TXTBIT_AUTOWORDSEL
#define TXTBIT_SAVESELECTION
#define TXTBIT_USEPASSWORD
#define TXTBIT_HIDESELECTION
EXTERN_C const IID IID_ITextHost2
#define TXTBIT_DISABLEDRAG
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
TW_UINT32 TW_UINT16 TW_UINT16 MSG
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
static struct wctab tab[]
WINBASEAPI _In_ DWORD nLength
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ DWORD _In_ DWORD dwBufLen
#define HRESULT_FROM_WIN32(x)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HENHMETAFILE WINAPI SetEnhMetaFileBits(_In_ UINT nSize, _In_reads_bytes_(nSize) const BYTE *pb)
HBITMAP WINAPI CreateDIBitmap(_In_ HDC hdc, _In_opt_ const BITMAPINFOHEADER *pbmih, _In_ DWORD fdwInit, _In_opt_ const VOID *pvInit, _In_opt_ const BITMAPINFO *pbmi, _In_ UINT uUsage)
HENHMETAFILE WINAPI SetWinMetaFileBits(_In_ UINT nSize, _In_reads_bytes_(nSize) const BYTE *lpMeta16Data, _In_opt_ HDC hdcRef, _In_opt_ const METAFILEPICT *lpMFP)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
#define EM_GETWORDBREAKPROC
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
struct tagSCROLLINFO SCROLLINFO
int WINAPI MessageBoxA(_In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpCaption, _In_ UINT uType)
#define EM_EMPTYUNDOBUFFER
UINT WINAPI RegisterClipboardFormatW(_In_ LPCWSTR)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
BOOL WINAPI MessageBeep(_In_ UINT uType)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define EM_GETFIRSTVISIBLELINE
UINT WINAPI GetDoubleClickTime(void)
#define WM_IME_SETCONTEXT
#define EM_SETWORDBREAKPROC
HDC WINAPI GetDC(_In_opt_ HWND)
int(CALLBACK * EDITWORDBREAKPROCW)(LPWSTR, int, int, int)
LONG WINAPI GetMessageTime(void)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define WM_IME_COMPOSITIONFULL
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
BOOL WINAPI DestroyCaret(void)
#define MAKEINTRESOURCEW(i)
int WINAPI GetSystemMetrics(_In_ int)
SHORT WINAPI GetKeyState(_In_ int)