Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 2648 of file editor.c.
Referenced by CreateTextServices(), and ME_CreateTextHost().
{ ME_TextEditor *ed = ALLOC_OBJ(ME_TextEditor); int i; DWORD props; LONG selbarwidth; ed->hWnd = NULL; ed->hwndParent = NULL; ed->sizeWindow.cx = ed->sizeWindow.cy = 0; ed->texthost = texthost; ed->bEmulateVersion10 = bEmulateVersion10; ed->styleFlags = 0; ITextHost_TxGetPropertyBits(texthost, (TXTBIT_RICHTEXT|TXTBIT_MULTILINE| TXTBIT_READONLY|TXTBIT_USEPASSWORD| TXTBIT_HIDESELECTION|TXTBIT_SAVESELECTION| TXTBIT_AUTOWORDSEL|TXTBIT_VERTICAL| TXTBIT_WORDWRAP|TXTBIT_DISABLEDRAG), &props); ITextHost_TxGetScrollBars(texthost, &ed->styleFlags); ed->styleFlags &= (WS_VSCROLL|WS_HSCROLL|ES_AUTOVSCROLL| ES_AUTOHSCROLL|ES_DISABLENOSCROLL); ed->pBuffer = ME_MakeText(); ed->nZoomNumerator = ed->nZoomDenominator = 0; ed->nAvailWidth = 0; /* wrap to client area */ ME_MakeFirstParagraph(ed); /* The four cursors are for: * 0 - The position where the caret is shown * 1 - The anchored end of the selection (for normal selection) * 2 & 3 - The anchored start and end respectively for word, line, * or paragraph selection. */ ed->nCursors = 4; ed->pCursors = ALLOC_N_OBJ(ME_Cursor, ed->nCursors); ME_SetCursorToStart(ed, &ed->pCursors[0]); ed->pCursors[1] = ed->pCursors[0]; ed->pCursors[2] = ed->pCursors[0]; ed->pCursors[3] = ed->pCursors[1]; ed->nLastTotalLength = ed->nTotalLength = 0; ed->nLastTotalWidth = ed->nTotalWidth = 0; ed->nUDArrowX = -1; ed->nSequence = 0; ed->rgbBackColor = -1; ed->hbrBackground = GetSysColorBrush(COLOR_WINDOW); ed->bCaretAtEnd = FALSE; ed->nEventMask = 0; ed->nModifyStep = 0; ed->nTextLimit = TEXT_LIMIT_DEFAULT; ed->pUndoStack = ed->pRedoStack = ed->pUndoStackBottom = NULL; ed->nUndoStackSize = 0; ed->nUndoLimit = STACK_SIZE_DEFAULT; ed->nUndoMode = umAddToUndo; ed->nParagraphs = 1; ed->nLastSelStart = ed->nLastSelEnd = 0; ed->pLastSelStartPara = ed->pLastSelEndPara = ed->pCursors[0].pPara; ed->bHideSelection = FALSE; ed->pfnWordBreak = NULL; ed->lpOleCallback = NULL; ed->mode = TM_MULTILEVELUNDO | TM_MULTICODEPAGE; ed->mode |= (props & TXTBIT_RICHTEXT) ? TM_RICHTEXT : TM_PLAINTEXT; ed->AutoURLDetect_bEnable = FALSE; ed->bHaveFocus = FALSE; ed->bDialogMode = FALSE; ed->bMouseCaptured = FALSE; for (i=0; i<HFONT_CACHE_SIZE; i++) { ed->pFontCache[i].nRefs = 0; ed->pFontCache[i].nAge = 0; ed->pFontCache[i].hFont = NULL; } ME_CheckCharOffsets(ed); ed->bDefaultFormatRect = TRUE; ITextHost_TxGetSelectionBarWidth(ed->texthost, &selbarwidth); if (selbarwidth) { /* FIXME: Convert selbarwidth from HIMETRIC to pixels */ ed->selofs = SELECTIONBAR_WIDTH; ed->styleFlags |= ES_SELECTIONBAR; } else { ed->selofs = 0; } ed->nSelectionType = stPosition; ed->cPasswordMask = 0; if (props & TXTBIT_USEPASSWORD) ITextHost_TxGetPasswordChar(texthost, &ed->cPasswordMask); if (props & TXTBIT_AUTOWORDSEL) ed->styleFlags |= ECO_AUTOWORDSELECTION; if (props & TXTBIT_MULTILINE) { ed->styleFlags |= ES_MULTILINE; ed->bWordWrap = (props & TXTBIT_WORDWRAP) != 0; } else { ed->bWordWrap = FALSE; } if (props & TXTBIT_READONLY) ed->styleFlags |= ES_READONLY; if (!(props & TXTBIT_HIDESELECTION)) ed->styleFlags |= ES_NOHIDESEL; if (props & TXTBIT_SAVESELECTION) ed->styleFlags |= ES_SAVESEL; if (props & TXTBIT_VERTICAL) ed->styleFlags |= ES_VERTICAL; if (props & TXTBIT_DISABLEDRAG) ed->styleFlags |= ES_NOOLEDRAGDROP; ed->notified_cr.cpMin = ed->notified_cr.cpMax = 0; /* Default scrollbar information */ ed->vert_si.cbSize = sizeof(SCROLLINFO); ed->vert_si.nMin = 0; ed->vert_si.nMax = 0; ed->vert_si.nPage = 0; ed->vert_si.nPos = 0; ed->horz_si.cbSize = sizeof(SCROLLINFO); ed->horz_si.nMin = 0; ed->horz_si.nMax = 0; ed->horz_si.nPage = 0; ed->horz_si.nPos = 0; OleInitialize(NULL); return ed; }