RICHEDIT: forward the RichEdit 1.0 control to the RichEdit 2.0 control

Mike McCormack mike at codeweavers.com
Thu Mar 10 03:33:01 CST 2005


Thanks to Krzysztof, we now have a working Richedit 2.0.  This patch 
reimplements the older RichEdit 1.0 control by forwarding it to the new 
RichEdit code (the same way that Windows 2000 implements RichEdit 1.0).

The following files can now be sent to the Attic:

dlls/richedit/reader.c
dlls/richedit/text-writer.c
dlls/richedit/ansi_gen.h
dlls/richedit/ansi_sym.h
dlls/richedit/rtf.h
dlls/richedit/text_map.h
dlls/richedit/rtf2text.h
dlls/richedit/riched32.h
dlls/richedit/stdcharnames.h

Mike


ChangeLog:
* forward the RichEdit 1.0 control to the RichEdit 2.0 control
-------------- next part --------------
Index: dlls/richedit/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/richedit/Makefile.in,v
retrieving revision 1.14
diff -u -p -r1.14 Makefile.in
--- dlls/richedit/Makefile.in	27 Aug 2004 19:15:08 -0000	1.14
+++ dlls/richedit/Makefile.in	10 Mar 2005 09:27:21 -0000
@@ -3,11 +3,9 @@ TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = riched32.dll
-IMPORTS   = user32 kernel32
+IMPORTS   = riched20 user32 kernel32
 
 C_SRCS = \
-	reader.c \
-	text-writer.c \
 	richedit.c
 
 @MAKE_DLL_RULES@
Index: dlls/richedit/richedit.c
===================================================================
RCS file: /home/wine/wine/dlls/richedit/richedit.c,v
retrieving revision 1.42
diff -u -p -r1.42 richedit.c
--- dlls/richedit/richedit.c	4 Mar 2005 10:47:54 -0000	1.42
+++ dlls/richedit/richedit.c	10 Mar 2005 09:27:22 -0000
@@ -1,11 +1,10 @@
 /*
  * RichEdit32  functions
  *
- * This module is a simple wrapper for the edit controls.
- * At the point, it is good only for application who use the RICHEDIT
- * control to display RTF text.
+ * This module is a simple wrapper for the RichEdit 2.0 control
  *
  * Copyright 2000 by Jean-Claude Batista
+ * Copyright 2005 Mike McCormack
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -29,728 +28,24 @@
 #include "wingdi.h"
 #include "winreg.h"
 #include "winerror.h"
-#include "riched32.h"
+#include "winuser.h"
 #include "richedit.h"
-#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 
-#include "rtf.h"
-#include "rtf2text.h"
 #include "wine/debug.h"
 
-#define ID_EDIT      1
-
 WINE_DEFAULT_DEBUG_CHANNEL(richedit);
 
-HANDLE RICHED32_hHeap = NULL;
-/* LPSTR  RICHED32_aSubclass = NULL; */
-static WNDPROC lpfnEditWndProc = NULL;
-static INT RTFInfoOffset = 0;
-
-#define TRACE_EDIT_MSG32(str) \
-        TRACE(\
-                     "32 bit : " str ": hwnd=%p, wParam=%08x, lParam=%08x\n"\
-                     , \
-                     hwnd, (UINT)wParam, (UINT)lParam)
-
-VOID RICHEDIT_InitEditControlInfo(void);
-
-/***********************************************************************
- * DllMain [Internal] Initializes the internal 'RICHED32.DLL'.
- *
- * PARAMS
- *     hinstDLL    [I] handle to the DLL's instance
- *     fdwReason   [I]
- *     lpvReserved [I] reserved, must be NULL
- *
- * RETURNS
- *     Success: TRUE
- *     Failure: FALSE
- */
-
-BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
-{
-    TRACE("\n");
-    switch (fdwReason)
-    {
-    case DLL_PROCESS_ATTACH:
-        DisableThreadLibraryCalls(hinstDLL);
-        /* create private heap */
-        RICHED32_hHeap = HeapCreate (0, 0x10000, 0);
-        /* Retrieve edit control class info */
-        RICHEDIT_InitEditControlInfo();
-        /* register the Rich Edit class */
-        RICHED32_Register ();
-        break;
-
-    case DLL_PROCESS_DETACH:
-        /* unregister all common control classes */
-        RICHED32_Unregister ();
-        HeapDestroy (RICHED32_hHeap);
-        RICHED32_hHeap = NULL;
-        break;
-    }
-    return TRUE;
-}
-
-/* Support routines for window procedure */
-   INT RICHEDIT_GetTextRange(HWND hwnd,TEXTRANGEA *tr);
-   INT RICHEDIT_GetSelText(HWND hwnd,LPSTR lpstrBuffer);
-
-typedef struct _RTFControl_info
-{
-    HWND hwndParent;
-    char* rtfBuffer;
-    RTF_Info *parser;
-} RTFControl_Info;
-
-/*
- *
- * DESCRIPTION:
- * Window procedure of the RichEdit control.
- *
- */
-static LRESULT WINAPI RICHED32_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,
-                                   LPARAM lParam)
-{
-    LONG newstyle = 0;
-    RTFControl_Info *info;
-    CHARRANGE *cr;
-
-    info = (RTFControl_Info *) GetWindowLongW( hwnd, RTFInfoOffset );
-
-    TRACE("uMsg: 0x%x hwnd: %p\n",uMsg,hwnd);
-
-    switch (uMsg)
-    {
-
-    case WM_CREATE:
-            TRACE_EDIT_MSG32("WM_CREATE Passed to default");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-        
-    case WM_NCCREATE :
-	    TRACE_EDIT_MSG32("WM_NCCREATE");
-
-            info = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
-                              sizeof (RTFControl_Info));
-            info->parser = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
-                              sizeof (RTF_Info));
-            SetWindowLongW( hwnd, RTFInfoOffset, (LONG)info );
-
-	    /* remove SCROLLBARS from the current window style */
-	    info->hwndParent = ((LPCREATESTRUCTA) lParam)->hwndParent;
-
-            newstyle = ((LPCREATESTRUCTA) lParam)->style;
-            newstyle &= ~ES_NUMBER;  /* Reused as ES_DISABLENOSCROLL */
-	    SetWindowLongA(hwnd,GWL_STYLE, newstyle);
-
-            /* Note that SetWindowLongA(hwnd,GWL_STYLE...) does not update 
-               the style field in the text window as the edit structure is
-               not initialized until it processes this message. Therefore
-               update the style in the message itself                     */
-            ((LPCREATESTRUCTA) lParam)->style = newstyle;
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-
-    case WM_SETFOCUS :
-	    TRACE_EDIT_MSG32("WM_SETFOCUS");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-
-    case WM_SIZE :
-            TRACE_EDIT_MSG32("WM_SIZE");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-
-    case WM_COMMAND :
-        TRACE_EDIT_MSG32("WM_COMMAND");
-	switch(HIWORD(wParam)) {
-		case EN_CHANGE:
-		case EN_HSCROLL:
-		case EN_KILLFOCUS:
-		case EN_SETFOCUS:
-		case EN_UPDATE:
-		case EN_VSCROLL:
-			return SendMessageA(info->hwndParent, WM_COMMAND,
-				wParam, (LPARAM)(hwnd));
-
-		case EN_ERRSPACE:
-		case EN_MAXTEXT:
-			MessageBoxA (hwnd, "RichEdit control out of space.",
-                                  "ERROR", MB_OK | MB_ICONSTOP) ;
-			return 0 ;
-		}
-
-    case EM_STREAMIN:
-            TRACE_EDIT_MSG32("EM_STREAMIN");
-
-	    /* setup the RTF parser */
-	    RTFSetEditStream(info->parser,( EDITSTREAM*)lParam);
-	    info->parser->rtfFormat = wParam&(SF_TEXT|SF_RTF);
-	    info->parser->hwndEdit = hwnd;
-	    WriterInit(info->parser);
-	    RTFInit (info->parser);
-	    BeginFile(info->parser);
-
-	    /* do the parsing */
-	    RTFRead (info->parser);
-            RTFFlushOutputBuffer( info->parser );
-
-            /* put the cursor at the top */
-            SendMessageA( hwnd, EM_SETSEL, 0, 0 );
-
-            return 0;
-
-/* Messages specific to Richedit controls */
-
-    case EM_AUTOURLDETECT:
-            TRACE_EDIT_MSG32("EM_AUTOURLDETECT Ignored");
-	    return 0;
-
-    case EM_CANPASTE:
-            TRACE_EDIT_MSG32("EM_CANPASTE Ignored");
-	    return 0;
-
-    case EM_CANREDO:
-            TRACE_EDIT_MSG32("EM_CANREDO Ignored");
-	    return 0;
-
-    case EM_DISPLAYBAND:
-            TRACE_EDIT_MSG32("EM_DISPLAYBAND Ignored");
-	    return 0;
-
-    case EM_EXGETSEL:
-            TRACE_EDIT_MSG32("EM_EXGETSEL -> EM_GETSEL");
-            cr = (VOID *) lParam;
-            CallWindowProcA(lpfnEditWndProc, hwnd, EM_GETSEL, (INT)&cr->cpMin, (INT)&cr->cpMax);
-            TRACE("cpMin: 0x%x cpMax: 0x%x\n",(INT)cr->cpMin,(INT)cr->cpMax);
-            return 0;
-
-    case EM_EXLIMITTEXT:
-        {
-           DWORD limit = lParam;
-           TRACE_EDIT_MSG32("EM_EXLIMITTEXT");
-           if (limit > 65534)
-           {
-                limit = 0xFFFFFFFF;
-           }
-           return CallWindowProcA(lpfnEditWndProc, hwnd, EM_SETLIMITTEXT, limit, 0);
-        }
-
-    case EM_EXLINEFROMCHAR:
-            TRACE_EDIT_MSG32("EM_EXLINEFROMCHAR -> LINEFROMCHAR");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, EM_LINEFROMCHAR, lParam, wParam);
-
-    case EM_EXSETSEL:
-            TRACE_EDIT_MSG32("EM_EXSETSEL -> EM_SETSEL");
-            cr = (VOID *) lParam;
-            return CallWindowProcA(lpfnEditWndProc, hwnd, EM_SETSEL, cr->cpMin, cr->cpMax);
-
-    case EM_FINDTEXT:
-            TRACE_EDIT_MSG32("EM_FINDTEXT Ignored");
-            return 0;
-
-    case EM_FINDTEXTEX:
-            TRACE_EDIT_MSG32("EM_FINDTEXTEX Ignored");
-            return 0;
-
-    case EM_FINDTEXTEXW:
-            TRACE_EDIT_MSG32("EM_FINDTEXTEXW Ignored");
-            return 0;
-
-    case EM_FINDTEXTW:
-            TRACE_EDIT_MSG32("EM_FINDTEXTW Ignored");
-            return 0;
-
-    case EM_FINDWORDBREAK:
-            TRACE_EDIT_MSG32("EM_FINDWORDBREAK Ignored");
-            return 0;
-
-    case EM_FORMATRANGE:
-            TRACE_EDIT_MSG32("EM_FORMATRANGE Ignored");
-            return 0;
-
-    case EM_GETAUTOURLDETECT:
-            TRACE_EDIT_MSG32("EM_GETAUTOURLDETECT Ignored");
-            return 0;
-
-    case EM_GETBIDIOPTIONS:
-            TRACE_EDIT_MSG32("EM_GETBIDIOPTIONS Ignored");
-            return 0;
-
-    case EM_GETCHARFORMAT:
-            TRACE_EDIT_MSG32("EM_GETCHARFORMAT Ignored");
-            return 0;
-
-    case EM_GETEDITSTYLE:
-            TRACE_EDIT_MSG32("EM_GETEDITSTYLE Ignored");
-            return 0;
-
-    case EM_GETEVENTMASK:
-            TRACE_EDIT_MSG32("EM_GETEVENTMASK Ignored");
-            return 0;
-
-    case EM_GETIMECOLOR:
-            TRACE_EDIT_MSG32("EM_GETIMECOLOR Ignored");
-            return 0;
-
-    case EM_GETIMECOMPMODE:
-            TRACE_EDIT_MSG32("EM_GETIMECOMPMODE Ignored");
-            return 0;
-
-    case EM_GETIMEOPTIONS:
-            TRACE_EDIT_MSG32("EM_GETIMEOPTIONS Ignored");
-            return 0;
-
-    case EM_GETLANGOPTIONS:
-            TRACE_EDIT_MSG32("STUB: EM_GETLANGOPTIONS");
-            return 0;
-
-    case EM_GETOLEINTERFACE:
-            TRACE_EDIT_MSG32("EM_GETOLEINTERFACE Ignored");
-            return 0;
-
-    case EM_GETOPTIONS:
-            TRACE_EDIT_MSG32("EM_GETOPTIONS Ignored");
-            return 0;
-
-    case EM_GETPARAFORMAT:
-            TRACE_EDIT_MSG32("EM_GETPARAFORMAT Ignored");
-            return 0;
-
-    case EM_GETPUNCTUATION:
-            TRACE_EDIT_MSG32("EM_GETPUNCTUATION Ignored");
-            return 0;
-
-    case EM_GETREDONAME:
-            TRACE_EDIT_MSG32("EM_GETREDONAME Ignored");
-            return 0;
-
-    case EM_GETSCROLLPOS:
-            TRACE_EDIT_MSG32("EM_GETSCROLLPOS Ignored");
-            return 0;
-
-    case EM_GETSELTEXT:
-            TRACE_EDIT_MSG32("EM_GETSELTEXT");
-            return RICHEDIT_GetSelText(hwnd,(void *)lParam);
-
-    case EM_GETTEXTEX:
-            TRACE_EDIT_MSG32("EM_GETTEXTEX Ignored");
-            return 0;
-
-    case EM_GETTEXTLENGTHEX:
-            TRACE_EDIT_MSG32("EM_GETTEXTLENGTHEX Ignored");
-            return 0;
-
-    case EM_GETTEXTMODE:
-            TRACE_EDIT_MSG32("EM_GETTEXTMODE Ignored");
-            return 0;
-
-    case EM_GETTEXTRANGE:
-            TRACE_EDIT_MSG32("EM_GETTEXTRANGE");
-            return RICHEDIT_GetTextRange(hwnd,(TEXTRANGEA *)lParam);
-
-    case EM_GETTYPOGRAPHYOPTIONS:
-            TRACE_EDIT_MSG32("EM_GETTYPOGRAPHYOPTIONS Ignored");
-            return 0;
-
-    case EM_GETUNDONAME:
-            TRACE_EDIT_MSG32("EM_GETUNDONAME Ignored");
-            return 0;
-
-    case EM_GETWORDBREAKPROCEX:
-            TRACE_EDIT_MSG32("EM_GETWORDBREAKPROCEX Ignored");
-            return 0;
-
-    case EM_GETWORDWRAPMODE:
-            TRACE_EDIT_MSG32("EM_GETWORDWRAPMODE Ignored");
-            return 0;
-
-    case EM_GETZOOM:
-            TRACE_EDIT_MSG32("EM_GETZOOM Ignored");
-            return 0;
-
-    case EM_HIDESELECTION:
-            TRACE_EDIT_MSG32("EM_HIDESELECTION Ignored");
-            return 0;
-
-    case EM_PASTESPECIAL:
-            TRACE_EDIT_MSG32("EM_PASTESPECIAL Ignored");
-            return 0;
-
-    case EM_RECONVERSION:
-            TRACE_EDIT_MSG32("EM_RECONVERSION Ignored");
-            return 0;
-
-    case EM_REDO:
-            TRACE_EDIT_MSG32("EM_REDO Ignored");
-            return 0;
-
-    case EM_REQUESTRESIZE:
-            TRACE_EDIT_MSG32("EM_REQUESTRESIZE Ignored");
-            return 0;
-
-    case EM_SELECTIONTYPE:
-            TRACE_EDIT_MSG32("EM_SELECTIONTYPE Ignored");
-            return 0;
-
-    case EM_SETBIDIOPTIONS:
-            TRACE_EDIT_MSG32("EM_SETBIDIOPTIONS Ignored");
-            return 0;
-
-    case EM_SETBKGNDCOLOR:
-            TRACE_EDIT_MSG32("EM_SETBKGNDCOLOR Ignored");
-            return 0;
-
-    case EM_SETCHARFORMAT:
-            TRACE_EDIT_MSG32("EM_SETCHARFORMAT Ignored");
-            return 0;
-
-    case EM_SETEDITSTYLE:
-            TRACE_EDIT_MSG32("EM_SETEDITSTYLE Ignored");
-            return 0;
-
-    case EM_SETEVENTMASK:
-            TRACE_EDIT_MSG32("EM_SETEVENTMASK Ignored");
-            return 0;
-
-    case EM_SETFONTSIZE:
-            TRACE_EDIT_MSG32("EM_SETFONTSIZE Ignored");
-            return 0;
-
-    case EM_SETIMECOLOR:
-            TRACE_EDIT_MSG32("EM_SETIMECOLO Ignored");
-            return 0;
-
-    case EM_SETIMEOPTIONS:
-            TRACE_EDIT_MSG32("EM_SETIMEOPTIONS Ignored");
-            return 0;
-
-    case EM_SETLANGOPTIONS:
-            TRACE_EDIT_MSG32("EM_SETLANGOPTIONS Ignored");
-            return 0;
-
-    case EM_SETOLECALLBACK:
-            TRACE_EDIT_MSG32("EM_SETOLECALLBACK Ignored");
-            return 0;
-
-    case EM_SETOPTIONS:
-            TRACE_EDIT_MSG32("EM_SETOPTIONS Ignored");
-            return 0;
-
-    case EM_SETPALETTE:
-            TRACE_EDIT_MSG32("EM_SETPALETTE Ignored");
-            return 0;
-
-    case EM_SETPARAFORMAT:
-            TRACE_EDIT_MSG32("EM_SETPARAFORMAT Ignored");
-            return 0;
-
-    case EM_SETPUNCTUATION:
-            TRACE_EDIT_MSG32("EM_SETPUNCTUATION Ignored");
-            return 0;
-
-    case EM_SETSCROLLPOS:
-            TRACE_EDIT_MSG32("EM_SETSCROLLPOS Ignored");
-            return 0;
-
-    case EM_SETTARGETDEVICE:
-            TRACE_EDIT_MSG32("EM_SETTARGETDEVICE Ignored");
-            return 0;
-
-    case EM_SETTEXTEX:
-            TRACE_EDIT_MSG32("EM_SETTEXTEX Ignored");
-            return 0;
-
-    case EM_SETTEXTMODE:
-            TRACE_EDIT_MSG32("EM_SETTEXTMODE Ignored");
-            return 0;
-
-    case EM_SETTYPOGRAPHYOPTIONS:
-            TRACE_EDIT_MSG32("EM_SETTYPOGRAPHYOPTIONS Ignored");
-            return 0;
-
-    case EM_SETUNDOLIMIT:
-            TRACE_EDIT_MSG32("EM_SETUNDOLIMIT Ignored");
-            return 0;
-
-    case EM_SETWORDBREAKPROCEX:
-            TRACE_EDIT_MSG32("EM_SETWORDBREAKPROCEX Ignored");
-            return 0;
-
-    case EM_SETWORDWRAPMODE:
-            TRACE_EDIT_MSG32("EM_SETWORDWRAPMODE Ignored");
-            return 0;
-
-    case EM_SETZOOM:
-            TRACE_EDIT_MSG32("EM_SETZOOM Ignored");
-            return 0;
-
-    case EM_SHOWSCROLLBAR:
-            TRACE_EDIT_MSG32("EM_SHOWSCROLLBAR Ignored");
-            return 0;
-
-    case EM_STOPGROUPTYPING:
-            TRACE_EDIT_MSG32("EM_STOPGROUPTYPING Ignored");
-            return 0;
-
-    case EM_STREAMOUT:
-            TRACE_EDIT_MSG32("EM_STREAMOUT Ignored");
-            return 0;
-
-/* Messages dispatched to the edit control */
-     case EM_CANUNDO:
-            TRACE_EDIT_MSG32("EM_CANUNDO Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_CHARFROMPOS:
-            TRACE_EDIT_MSG32("EM_CHARFROMPOS Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_EMPTYUNDOBUFFER:
-            TRACE_EDIT_MSG32("EM_EMPTYUNDOBUFFER Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_FMTLINES:
-            TRACE_EDIT_MSG32("EM_FMTLINES Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETFIRSTVISIBLELINE:
-            TRACE_EDIT_MSG32("EM_GETFIRSTVISIBLELINE Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETHANDLE:
-            TRACE_EDIT_MSG32("EM_GETHANDLE Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
- /*    case EM_GETIMESTATUS:*/
-     case EM_GETLIMITTEXT:
-            TRACE_EDIT_MSG32("EM_GETLIMITTEXT Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETLINE:
-            TRACE_EDIT_MSG32("EM_GETLINE Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETLINECOUNT:
-            TRACE_EDIT_MSG32("EM_GETLINECOUNT Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETMARGINS:
-            TRACE_EDIT_MSG32("EM_GETMARGINS Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETMODIFY:
-            TRACE_EDIT_MSG32("EM_GETMODIFY Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETPASSWORDCHAR:
-            TRACE_EDIT_MSG32("EM_GETPASSWORDCHAR Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETRECT:
-            TRACE_EDIT_MSG32("EM_GETRECT Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETSEL:
-            TRACE_EDIT_MSG32("EM_GETSEL Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETTHUMB:
-            TRACE_EDIT_MSG32("EM_GETTHUMB Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_GETWORDBREAKPROC:
-            TRACE_EDIT_MSG32("EM_GETWORDBREAKPROC Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_LINEFROMCHAR:
-            TRACE_EDIT_MSG32("EM_LINEFROMCHAR Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_LINEINDEX:
-            TRACE_EDIT_MSG32("EM_LINEINDEX Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_LINELENGTH:
-            TRACE_EDIT_MSG32("EM_LINELENGTH Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_LINESCROLL:
-            TRACE_EDIT_MSG32("EM_LINESCROLL Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_POSFROMCHAR:
-            TRACE_EDIT_MSG32("EM_POSFROMCHAR Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_REPLACESEL:
-            TRACE_EDIT_MSG32("case EM_REPLACESEL Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SCROLL:
-            TRACE_EDIT_MSG32("case EM_SCROLL Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SCROLLCARET:
-     case WM_USER+49:  /* EM_SCROLLCARET too */
-            TRACE_EDIT_MSG32("EM_SCROLLCARET Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, EM_SCROLLCARET, wParam, lParam);
-     case EM_SETHANDLE:
-            TRACE_EDIT_MSG32("EM_SETHANDLE Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
- /*    case EM_SETIMESTATUS:*/
-     case EM_SETLIMITTEXT:
-            TRACE_EDIT_MSG32("EM_SETLIMITTEXT Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SETMARGINS:
-            TRACE_EDIT_MSG32("case EM_SETMARGINS Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SETMODIFY:
-            TRACE_EDIT_MSG32("EM_SETMODIFY Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SETPASSWORDCHAR:
-            TRACE_EDIT_MSG32("EM_SETPASSWORDCHAR Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SETREADONLY:
-            TRACE_EDIT_MSG32("EM_SETREADONLY Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SETRECT:
-            TRACE_EDIT_MSG32("EM_SETRECT Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SETRECTNP:
-            TRACE_EDIT_MSG32("EM_SETRECTNP Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SETSEL:
-            TRACE_EDIT_MSG32("EM_SETSEL Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SETTABSTOPS:
-            TRACE_EDIT_MSG32("EM_SETTABSTOPS Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_SETWORDBREAKPROC:
-            TRACE_EDIT_MSG32("EM_SETWORDBREAKPROC Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case EM_UNDO:
-            TRACE_EDIT_MSG32("EM_UNDO Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-
-     case WM_STYLECHANGING:
-            TRACE_EDIT_MSG32("WM_STYLECHANGING Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case WM_STYLECHANGED:
-            TRACE_EDIT_MSG32("WM_STYLECHANGED Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case WM_GETTEXT:
-            TRACE_EDIT_MSG32("WM_GETTEXT Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case WM_GETTEXTLENGTH:
-            TRACE_EDIT_MSG32("WM_GETTEXTLENGTH Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case WM_SETTEXT:
-            TRACE_EDIT_MSG32("WM_SETTEXT Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case WM_CUT:
-            TRACE_EDIT_MSG32("WM_CUT Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-     case WM_COPY:
-            TRACE_EDIT_MSG32("WM_COPY Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_PASTE:
-            TRACE_EDIT_MSG32("WM_PASTE Passed to edit control");
-            return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-
-    /* Messages passed to default handler. */
-    case WM_NCCALCSIZE:
-        TRACE_EDIT_MSG32("WM_NCCALCSIZE Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_NCPAINT:
-        TRACE_EDIT_MSG32("WM_NCPAINT Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_PAINT:
-        TRACE_EDIT_MSG32("WM_PAINT Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_ERASEBKGND:
-        TRACE_EDIT_MSG32("WM_ERASEBKGND Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_KILLFOCUS:
-        TRACE_EDIT_MSG32("WM_KILLFOCUS Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_DESTROY:
-        TRACE_EDIT_MSG32("WM_DESTROY Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_CHILDACTIVATE:
-	TRACE_EDIT_MSG32("WM_CHILDACTIVATE Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-
-    case WM_WINDOWPOSCHANGING:
-        TRACE_EDIT_MSG32("WM_WINDOWPOSCHANGING Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_WINDOWPOSCHANGED:
-        TRACE_EDIT_MSG32("WM_WINDOWPOSCHANGED Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-/*    case WM_INITIALUPDATE:
-        TRACE_EDIT_MSG32("WM_INITIALUPDATE Passed to default");
-        return DefWindowProcA( hwnd,uMsg,wParam,lParam); */
-    case WM_CTLCOLOREDIT:
-        TRACE_EDIT_MSG32("WM_CTLCOLOREDIT Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_SETCURSOR:
-        TRACE_EDIT_MSG32("WM_SETCURSOR Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_MOVE:
-        TRACE_EDIT_MSG32("WM_MOVE Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_SHOWWINDOW:
-        TRACE_EDIT_MSG32("WM_SHOWWINDOW Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_PARENTNOTIFY:
-        TRACE_EDIT_MSG32("WM_PARENTNOTIFY Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_SETREDRAW:
-        TRACE_EDIT_MSG32("WM_SETREDRAW Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_NCDESTROY:
-    {
-        TRACE_EDIT_MSG32("WM_NCDESTROY Passed to default");
-        HeapFree( GetProcessHeap(), 0, info->parser );
-        HeapFree( GetProcessHeap(), 0, info );
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    }
-
-    case WM_NCHITTEST:
-        TRACE_EDIT_MSG32("WM_NCHITTEST Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_CTLCOLORSTATIC:
-        TRACE_EDIT_MSG32("WM_CTLCOLORSTATIC Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_NCMOUSEMOVE:
-        TRACE_EDIT_MSG32("WM_NCMOUSEMOVE Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_CLEAR:
-        TRACE_EDIT_MSG32("WM_CLEAR Passed to default");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-   /*
-    * used by IE in the EULA box
-    */
-    case WM_ALTTABACTIVE:
-        TRACE_EDIT_MSG32("WM_ALTTABACTIVE");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_GETDLGCODE:
-        TRACE_EDIT_MSG32("WM_GETDLGCODE");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-    case WM_SETFONT:
-        TRACE_EDIT_MSG32("WM_SETFONT");
-        return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-
-    }
-
-    if ((uMsg >= WM_USER) && (uMsg < WM_APP)) {
-	FIXME("Unknown message 0x%x Passed to default hwnd=%p, wParam=%08x, lParam=%08x\n",
-	       uMsg, hwnd, (UINT)wParam, (UINT)lParam);
-    }
-
-   return CallWindowProcA(lpfnEditWndProc, hwnd, uMsg, wParam, lParam);
-}
-
-/***********************************************************************
- * DllGetVersion [RICHED32.2]
- *
- * Retrieves version information of the 'RICHED32.DLL'
- *
- * PARAMS
- *     pdvi [O] pointer to version information structure.
- *
- * RETURNS
- *     Success: S_OK
- *     Failure: E_INVALIDARG
- *
- * NOTES
- *     Returns version of a comctl32.dll from IE4.01 SP1.
- */
+/* Window procedure of the RichEdit 1.0 control in riched20.dll */
+extern LRESULT WINAPI RichEdit10ANSIWndProc(HWND, UINT, WPARAM, LPARAM);
 
-HRESULT WINAPI
-RICHED32_DllGetVersion (DLLVERSIONINFO *pdvi)
+/* Retrieves version information */
+HRESULT WINAPI RICHED32_DllGetVersion (DLLVERSIONINFO *pdvi)
 {
     TRACE("\n");
 
-    if (pdvi->cbSize != sizeof(DLLVERSIONINFO)) {
-
+    if (pdvi->cbSize != sizeof(DLLVERSIONINFO))
 	return E_INVALIDARG;
-    }
 
     pdvi->dwMajorVersion = 4;
     pdvi->dwMinorVersion = 0;
@@ -760,99 +55,47 @@ RICHED32_DllGetVersion (DLLVERSIONINFO *
     return S_OK;
 }
 
-/***
- * DESCRIPTION:
- * Registers the window class.
- *
- * PARAMETER(S):
- * None
- *
- * RETURN:
- * None
- */
-VOID RICHED32_Register(void)
+/* Unregisters the window class. */
+BOOL RICHED32_Unregister(void)
 {
-    WNDCLASSA wndClass;
-
     TRACE("\n");
 
+    UnregisterClassA(RICHEDIT_CLASS10A, NULL);
+    return TRUE;
+}
+
+
+/* Registers the window class. */
+static BOOL RICHED32_Register(void)
+{
+    WNDCLASSA wndClass;
+
     ZeroMemory(&wndClass, sizeof(WNDCLASSA));
     wndClass.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
-    wndClass.lpfnWndProc = RICHED32_WindowProc;
+    wndClass.lpfnWndProc = RichEdit10ANSIWndProc;
     wndClass.cbClsExtra = 0;
-    wndClass.cbWndExtra = RTFInfoOffset + sizeof(RTFControl_Info*);
+    wndClass.cbWndExtra = 4;
     wndClass.hCursor = LoadCursorA(0, (LPSTR)IDC_ARROW);
     wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
     wndClass.lpszClassName = RICHEDIT_CLASS10A; /* WC_RICHED32A; */
 
-    RegisterClassA (&wndClass);
-}
-
-/***
- * DESCRIPTION:
- * Unregisters the window class.
- *
- * PARAMETER(S):
- * None
- *
- * RETURN:
- * None
- */
-VOID RICHED32_Unregister(void)
-{
-    TRACE("\n");
+    RegisterClassA(&wndClass);
 
-    UnregisterClassA(RICHEDIT_CLASS10A, NULL);
+    return TRUE;
 }
 
-
-/***
- * DESCRIPTION:
- * Initialize edit control class info
- */
-VOID RICHEDIT_InitEditControlInfo(void)
+/* Initialization function */
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    WNDCLASSA wcEdit;
-
-    if (GetClassInfoA(0, "edit",  &wcEdit))
+    TRACE("\n");
+    switch (fdwReason)
     {
-        lpfnEditWndProc = wcEdit.lpfnWndProc;
-        RTFInfoOffset = wcEdit.cbWndExtra;
-    }
-    else
-        ERR("Failed to retrieve edit control class info\n");
-}
-
-
-INT RICHEDIT_GetTextRange(HWND hwnd,TEXTRANGEA *tr)
-{
-    UINT alloc_size, text_size, range_size;
-    char *text;
-
-    TRACE("start: 0x%x stop: 0x%x\n",(INT)tr->chrg.cpMin,(INT)tr->chrg.cpMax);
-
-    if (!(alloc_size = SendMessageA(hwnd,WM_GETTEXTLENGTH,0,0))) return FALSE;
-    if (!(text = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (alloc_size+1))))
-		return FALSE;
-    text_size = SendMessageA(hwnd,WM_GETTEXT,alloc_size,(INT)text);
+    case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
+        return RICHED32_Register();
 
-    if (text_size > tr->chrg.cpMin)
-    {
-       range_size = (text_size> tr->chrg.cpMax) ? (tr->chrg.cpMax - tr->chrg.cpMin) : (text_size - tr->chrg.cpMin);
-       TRACE("EditText: %.30s ...\n",text+tr->chrg.cpMin);
-       memcpy(tr->lpstrText,text+tr->chrg.cpMin,range_size);
+    case DLL_PROCESS_DETACH:
+        return RICHED32_Unregister();
     }
-    else range_size = 0;
-    HeapFree(GetProcessHeap(), 0, text);
-
-    return range_size;
-}
-
-INT RICHEDIT_GetSelText(HWND hwnd,LPSTR lpstrBuffer)
-{
-    TEXTRANGEA textrange;
-
-    textrange.lpstrText = lpstrBuffer;
-    SendMessageA(hwnd,EM_GETSEL,(INT)&textrange.chrg.cpMin,(INT)&textrange.chrg.cpMax);
-    return RICHEDIT_GetTextRange(hwnd,&textrange);
+    return TRUE;
 }


More information about the wine-patches mailing list