7 HMODULE m_LoadedLibrary
;
9 VOID
GenericInsertText(LPCWSTR lpszText
, LONG InsertedTextLen
, DWORD dwEffects
)
12 LONG Len
= GetTextLen();
17 SetText
.flags
= ST_SELECTION
;
18 SetText
.codepage
= 1200;
20 SendMessageW(EM_SETTEXTEX
, (WPARAM
) &SetText
, (LPARAM
) lpszText
);
22 if ((dwEffects
== CFM_LINK
) && !PathIsURLW(lpszText
))
24 // if text is not an URL, no styling is used
25 SetRangeFormatting(Len
, Len
+ InsertedTextLen
, 0);
29 SetRangeFormatting(Len
, Len
+ InsertedTextLen
, dwEffects
);
35 CRichEdit() : CWindow(), m_LoadedLibrary(NULL
) {}
37 VOID
SetRangeFormatting(LONG Start
, LONG End
, DWORD dwEffects
)
39 CHARFORMAT2W CharFormat
;
41 SendMessageW(EM_SETSEL
, Start
, End
);
43 ZeroMemory(&CharFormat
, sizeof(CharFormat
));
45 CharFormat
.cbSize
= sizeof(CharFormat
);
46 CharFormat
.dwMask
= dwEffects
;
47 CharFormat
.dwEffects
= dwEffects
;
49 SendMessageW(EM_SETCHARFORMAT
, SCF_WORD
| SCF_SELECTION
, (LPARAM
) &CharFormat
);
51 SendMessageW(EM_SETSEL
, End
, End
+ 1);
56 GETTEXTLENGTHEX TxtLenStruct
;
58 TxtLenStruct
.flags
= GTL_NUMCHARS
;
59 TxtLenStruct
.codepage
= 1200;
61 return (LONG
) SendMessageW(EM_GETTEXTLENGTHEX
, (WPARAM
) &TxtLenStruct
, 0);
65 * Insert text (without cleaning old text)
72 VOID
InsertText(LPCWSTR lpszText
, DWORD dwEffects
)
74 GenericInsertText(lpszText
, wcslen(lpszText
), dwEffects
);
77 VOID
InsertText(const ATL::CStringW
& szText
, DWORD dwEffects
)
79 GenericInsertText(szText
.GetString(), szText
.GetLength(), dwEffects
);
82 * Clear old text and add new
84 VOID
SetText(LPCWSTR lpszText
, DWORD dwEffects
)
87 InsertText(lpszText
, dwEffects
);
90 VOID
SetText(const ATL::CStringW
& szText
, DWORD dwEffects
)
92 SetText(szText
.GetString(), dwEffects
);
95 HWND
Create(HWND hwndParent
)
97 m_LoadedLibrary
= LoadLibraryW(L
"riched20.dll");
99 m_hWnd
= CreateWindowExW(0,
102 WS_CHILD
| WS_VISIBLE
| ES_MULTILINE
|
103 ES_LEFT
| ES_READONLY
,
107 _AtlBaseModule
.GetModuleInstance(),
112 SendMessageW(EM_SETBKGNDCOLOR
, 0, GetSysColor(COLOR_BTNFACE
));
113 SendMessageW(WM_SETFONT
, (WPARAM
) GetStockObject(DEFAULT_GUI_FONT
), 0);
114 SendMessageW(EM_SETEVENTMASK
, 0, ENM_LINK
| ENM_MOUSEEVENTS
);
115 SendMessageW(EM_SHOWSCROLLBAR
, SB_VERT
, TRUE
);
121 virtual VOID
OnLink(ENLINK
*Link
)
129 FreeLibrary(m_LoadedLibrary
);