Port the RTF parser to the richedit 2.0 control.
This commit is contained in:
parent
527ef47d70
commit
38f932c823
@ -12,6 +12,7 @@ C_SRCS = \
|
|||||||
list.c \
|
list.c \
|
||||||
paint.c \
|
paint.c \
|
||||||
para.c \
|
para.c \
|
||||||
|
reader.c \
|
||||||
richole.c \
|
richole.c \
|
||||||
row.c \
|
row.c \
|
||||||
run.c \
|
run.c \
|
||||||
|
@ -208,6 +208,8 @@
|
|||||||
#include <winreg.h>
|
#include <winreg.h>
|
||||||
#define NO_SHLWAPI_STREAM
|
#define NO_SHLWAPI_STREAM
|
||||||
#include <shlwapi.h>
|
#include <shlwapi.h>
|
||||||
|
|
||||||
|
#include "rtf.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(richedit);
|
WINE_DEFAULT_DEBUG_CHANNEL(richedit);
|
||||||
|
|
||||||
@ -304,6 +306,31 @@ ME_TextBuffer *ME_MakeText() {
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static LRESULT ME_StreamIn(HWND hwnd, DWORD format, EDITSTREAM *stream)
|
||||||
|
{
|
||||||
|
RTF_Info parser;
|
||||||
|
|
||||||
|
TRACE("%p %p\n", stream, hwnd);
|
||||||
|
|
||||||
|
/* setup the RTF parser */
|
||||||
|
memset(&parser, 0, sizeof parser);
|
||||||
|
RTFSetEditStream(&parser, stream);
|
||||||
|
parser.rtfFormat = format&(SF_TEXT|SF_RTF);
|
||||||
|
parser.hwndEdit = hwnd;
|
||||||
|
WriterInit(&parser);
|
||||||
|
RTFInit(&parser);
|
||||||
|
BeginFile(&parser);
|
||||||
|
|
||||||
|
/* do the parsing */
|
||||||
|
RTFRead(&parser);
|
||||||
|
RTFFlushOutputBuffer(&parser);
|
||||||
|
|
||||||
|
/* put the cursor at the top */
|
||||||
|
SendMessageA(hwnd, EM_SETSEL, 0, 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
ME_TextEditor *ME_MakeEditor(HWND hWnd) {
|
ME_TextEditor *ME_MakeEditor(HWND hWnd) {
|
||||||
ME_TextEditor *ed = ALLOC_OBJ(ME_TextEditor);
|
ME_TextEditor *ed = ALLOC_OBJ(ME_TextEditor);
|
||||||
HDC hDC;
|
HDC hDC;
|
||||||
@ -414,7 +441,6 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP
|
|||||||
UNSUPPORTED_MSG(EM_SETUNDOLIMIT)
|
UNSUPPORTED_MSG(EM_SETUNDOLIMIT)
|
||||||
UNSUPPORTED_MSG(EM_SETWORDBREAKPROC)
|
UNSUPPORTED_MSG(EM_SETWORDBREAKPROC)
|
||||||
UNSUPPORTED_MSG(EM_SETWORDBREAKPROCEX)
|
UNSUPPORTED_MSG(EM_SETWORDBREAKPROCEX)
|
||||||
UNSUPPORTED_MSG(EM_STREAMIN)
|
|
||||||
UNSUPPORTED_MSG(EM_STREAMOUT)
|
UNSUPPORTED_MSG(EM_STREAMOUT)
|
||||||
UNSUPPORTED_MSG(WM_SETFONT)
|
UNSUPPORTED_MSG(WM_SETFONT)
|
||||||
UNSUPPORTED_MSG(WM_PASTE)
|
UNSUPPORTED_MSG(WM_PASTE)
|
||||||
@ -422,7 +448,10 @@ LRESULT WINAPI RichEditANSIWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP
|
|||||||
UNSUPPORTED_MSG(WM_STYLECHANGED)
|
UNSUPPORTED_MSG(WM_STYLECHANGED)
|
||||||
/* UNSUPPORTED_MSG(WM_UNICHAR) FIXME missing in Wine headers */
|
/* UNSUPPORTED_MSG(WM_UNICHAR) FIXME missing in Wine headers */
|
||||||
|
|
||||||
|
/* Messages specific to Richedit controls */
|
||||||
|
|
||||||
|
case EM_STREAMIN:
|
||||||
|
return ME_StreamIn(hWnd, wParam, (EDITSTREAM*)lParam);
|
||||||
case WM_GETDLGCODE:
|
case WM_GETDLGCODE:
|
||||||
{
|
{
|
||||||
UINT code = DLGC_WANTCHARS|DLGC_WANTARROWS;
|
UINT code = DLGC_WANTCHARS|DLGC_WANTARROWS;
|
||||||
|
3778
dlls/riched20/reader.c
Normal file
3778
dlls/riched20/reader.c
Normal file
File diff suppressed because it is too large
Load Diff
1570
dlls/riched20/rtf.h
Normal file
1570
dlls/riched20/rtf.h
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user