diff options
author | George Hazan <george.hazan@gmail.com> | 2024-02-24 19:42:56 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-02-24 19:42:56 +0300 |
commit | c57f6f8b5c848b9287a8ae7e9dd99ec38ec20e68 (patch) | |
tree | 69e07ee12fc4eaf07cdb32cfc274b4b30cfddc4a /src | |
parent | 1beaee1f0efba88cbea9f1a93627fcce164b17e7 (diff) |
CCtrlRichEdit::GetPlainRtf - a method to get plain (non-Unicode) text in RTF
Diffstat (limited to 'src')
-rw-r--r-- | src/mir_core/src/Windows/CCtrlRichEdit.cpp | 20 | ||||
-rw-r--r-- | src/mir_core/src/mir_core.def | 1 | ||||
-rw-r--r-- | src/mir_core/src/mir_core64.def | 1 |
3 files changed, 19 insertions, 3 deletions
diff --git a/src/mir_core/src/Windows/CCtrlRichEdit.cpp b/src/mir_core/src/Windows/CCtrlRichEdit.cpp index d1a761781b..ae58f516cf 100644 --- a/src/mir_core/src/Windows/CCtrlRichEdit.cpp +++ b/src/mir_core/src/Windows/CCtrlRichEdit.cpp @@ -89,18 +89,32 @@ static DWORD CALLBACK MessageStreamCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, L return 0;
}
+char* CCtrlRichEdit::GetPlainRtf(bool bSelection)
+{
+ char *pszText = nullptr;
+ uint32_t dwFlags = SF_RTFNOOBJS | SFF_PLAINRTF;
+ if (bSelection)
+ dwFlags |= SFF_SELECTION;
+
+ EDITSTREAM stream = {};
+ stream.pfnCallback = MessageStreamCallback;
+ stream.dwCookie = (DWORD_PTR)&pszText; // pass pointer to pointer
+ SendMessage(m_hwnd, EM_STREAMOUT, dwFlags, (LPARAM)&stream);
+ return pszText; // pszText contains the text
+}
+
char* CCtrlRichEdit::GetRichTextRtf(bool bText, bool bSelection) const
{
char *pszText = nullptr;
- uint32_t dwFlags = 0;
+ uint32_t dwFlags = SF_USECODEPAGE | (CP_UTF8 << 16);
if (bText)
- dwFlags |= SF_USECODEPAGE | (CP_UTF8 << 16) / SF_TEXT;
+ dwFlags |= SF_TEXT;
else
dwFlags |= SF_RTFNOOBJS | SFF_PLAINRTF;
if (bSelection)
dwFlags |= SFF_SELECTION;
- EDITSTREAM stream = { 0 };
+ EDITSTREAM stream = {};
stream.pfnCallback = MessageStreamCallback;
stream.dwCookie = (DWORD_PTR)&pszText; // pass pointer to pointer
SendMessage(m_hwnd, EM_STREAMOUT, dwFlags, (LPARAM)&stream);
diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def index dc56ef8ee3..9296b22011 100644 --- a/src/mir_core/src/mir_core.def +++ b/src/mir_core/src/mir_core.def @@ -1576,3 +1576,4 @@ _newStr@4 @1789 NONAME ?Copy@MClipAnsi@@UBEXXZ @1801 NONAME
?Copy@MClipRtf@@UBEXXZ @1802 NONAME
?Copy@MClipUnicode@@UBEXXZ @1803 NONAME
+?GetPlainRtf@CCtrlRichEdit@@QAEPAD_N@Z @1804 NONAME
diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def index 7d9885b02d..0a4d9dcabc 100644 --- a/src/mir_core/src/mir_core64.def +++ b/src/mir_core/src/mir_core64.def @@ -1576,3 +1576,4 @@ newStr @1789 NONAME ?Copy@MClipAnsi@@UEBAXXZ @1801 NONAME
?Copy@MClipRtf@@UEBAXXZ @1802 NONAME
?Copy@MClipUnicode@@UEBAXXZ @1803 NONAME
+?GetPlainRtf@CCtrlRichEdit@@QEAAPEAD_N@Z @1804 NONAME
|