Sync to Wine-20050310: Mike McCormack mike@codeweavers.com - Forward the RichEdit 1.0 control to the RichEdit 2.0 control. - Don't clear ES_AUTO[HV]SCROLL in the edit control created by richedit. - Remove unused declaration. Francois Gouget fgouget@free.fr - Assorted spelling fixes. Jason Edmeades us@the-edmeades.demon.co.uk - Make the edit field created from a richedit control which was created with ES_DISABLENOSCROLL, not have the ES_NUMBER style and hence accept alphanumeric input. Modified: trunk/reactos/lib/richedit/Makefile.in Modified: trunk/reactos/lib/richedit/richedit.c _____
Modified: trunk/reactos/lib/richedit/Makefile.in --- trunk/reactos/lib/richedit/Makefile.in 2005-03-15 09:04:29 UTC (rev 14091) +++ trunk/reactos/lib/richedit/Makefile.in 2005-03-15 09:08:16 UTC (rev 14092) @@ -3,11 +3,9 @@
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@ _____
Modified: trunk/reactos/lib/richedit/richedit.c --- trunk/reactos/lib/richedit/richedit.c 2005-03-15 09:04:29 UTC (rev 14091) +++ trunk/reactos/lib/richedit/richedit.c 2005-03-15 09:08:16 UTC (rev 14092) @@ -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,29 @@ #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; +/* Window procedure of the RichEdit 1.0 control in riched20.dll */ +extern LRESULT WINAPI RichEdit10ANSIWndProc(HWND, UINT, WPARAM, LPARAM);
-#define TRACE_EDIT_MSG32(str) \ - TRACE(\ - "32 bit : " str ": hwnd=%p, wParam=%08x, lParam=%08x\n"\ - , \ - hwnd, (UINT)wParam, (UINT)lParam)
-LPVOID* WINAPI CreateIRichEditOle(); -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; - LONG style = 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 = style = ((LPCREATESTRUCTA) lParam)->style; - newstyle &= ~WS_HSCROLL; - newstyle &= ~WS_VSCROLL; - newstyle &= ~ES_AUTOHSCROLL; - newstyle &= ~ES_AUTOVSCROLL; - SetWindowLongA(hwnd,GWL_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. + * Retrieves version information */ - -HRESULT WINAPI -RICHED32_DllGetVersion (DLLVERSIONINFO *pdvi) +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 +60,47 @@ return S_OK; }
-/*** - * DESCRIPTION: - * Registers the window class. - * - * PARAMETER(S): - * None - * - * RETURN: - * None - */ -VOID RICHED32_Register(void) +/* Unregisters the window class. */ +static 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); -} + RegisterClassA(&wndClass);
-/*** - * DESCRIPTION: - * Unregisters the window class. - * - * PARAMETER(S): - * None - * - * RETURN: - * None - */ -VOID RICHED32_Unregister(void) -{ - TRACE("\n"); - - 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"); -} + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(hinstDLL); + return RICHED32_Register();
- -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); - - 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; + return TRUE; } - -INT RICHEDIT_GetSelText(HWND hwnd,LPSTR lpstrBuffer) -{ - TEXTRANGEA textrange; - - textrange.lpstrText = lpstrBuffer; - SendMessageA(hwnd,EM_GETSEL,(INT)&textrange.chrg.cpMin,(INT)&textrange.c hrg.cpMax); - return RICHEDIT_GetTextRange(hwnd,&textrange); -}