Forward the RichEdit 1.0 control to the RichEdit 2.0 control.
This commit is contained in:
parent
5ebd4e938e
commit
f79863d20f
|
@ -3,11 +3,9 @@ TOPOBJDIR = ../..
|
||||||
SRCDIR = @srcdir@
|
SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = riched32.dll
|
MODULE = riched32.dll
|
||||||
IMPORTS = user32 kernel32
|
IMPORTS = riched20 user32 kernel32
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
reader.c \
|
|
||||||
text-writer.c \
|
|
||||||
richedit.c
|
richedit.c
|
||||||
|
|
||||||
@MAKE_DLL_RULES@
|
@MAKE_DLL_RULES@
|
||||||
|
|
|
@ -1,211 +0,0 @@
|
||||||
/*
|
|
||||||
RTF ANSI character set (\ansi) general map
|
|
||||||
These are taken from the ISO-Latin-1 (ISO-8859-1) encodings, with
|
|
||||||
a few additions
|
|
||||||
|
|
||||||
Field 1 is the standard character name which the character value in
|
|
||||||
field 2 maps onto. (It doesn't mean "to produce the character in field 1,
|
|
||||||
use the value in field 2.)
|
|
||||||
|
|
||||||
The character value may be given either as a single character (which will be
|
|
||||||
converted to the ASCII value of the character), or in numeric format, either
|
|
||||||
in decimal or 0xyy as hex yy. Single or double quotes may be used to quote
|
|
||||||
characters.*/
|
|
||||||
|
|
||||||
int ansi_gen[] =
|
|
||||||
{
|
|
||||||
rtfSC_formula ,0x06,
|
|
||||||
rtfSC_nobrkhyphen ,0x1e,
|
|
||||||
rtfSC_opthyphen ,0x1f,
|
|
||||||
rtfSC_space ,' ',
|
|
||||||
rtfSC_exclam ,'!',
|
|
||||||
rtfSC_quotedbl ,'"',
|
|
||||||
rtfSC_numbersign ,'#',
|
|
||||||
rtfSC_dollar ,'$',
|
|
||||||
rtfSC_percent ,'%',
|
|
||||||
rtfSC_ampersand ,'&',
|
|
||||||
rtfSC_quoteright ,'\\',
|
|
||||||
rtfSC_parenleft ,'(',
|
|
||||||
rtfSC_parenright ,')',
|
|
||||||
rtfSC_asterisk ,'*',
|
|
||||||
rtfSC_plus ,'+',
|
|
||||||
rtfSC_comma ,',',
|
|
||||||
rtfSC_hyphen ,'-',
|
|
||||||
rtfSC_period ,'.',
|
|
||||||
rtfSC_slash ,'/',
|
|
||||||
rtfSC_zero ,'0',
|
|
||||||
rtfSC_one ,'1',
|
|
||||||
rtfSC_two ,'2',
|
|
||||||
rtfSC_three ,'3',
|
|
||||||
rtfSC_four ,'4',
|
|
||||||
rtfSC_five ,'5',
|
|
||||||
rtfSC_six ,'6',
|
|
||||||
rtfSC_seven ,'7',
|
|
||||||
rtfSC_eight ,'8',
|
|
||||||
rtfSC_nine ,'9',
|
|
||||||
rtfSC_colon ,':',
|
|
||||||
rtfSC_semicolon ,';',
|
|
||||||
rtfSC_less ,'<',
|
|
||||||
rtfSC_equal ,'=',
|
|
||||||
rtfSC_greater ,'>',
|
|
||||||
rtfSC_question ,'?',
|
|
||||||
rtfSC_at ,'@',
|
|
||||||
rtfSC_A ,'A',
|
|
||||||
rtfSC_B ,'B',
|
|
||||||
rtfSC_C ,'C',
|
|
||||||
rtfSC_D ,'D',
|
|
||||||
rtfSC_E ,'E',
|
|
||||||
rtfSC_F ,'F',
|
|
||||||
rtfSC_G ,'G',
|
|
||||||
rtfSC_H ,'H',
|
|
||||||
rtfSC_I ,'I',
|
|
||||||
rtfSC_J ,'J',
|
|
||||||
rtfSC_K ,'K',
|
|
||||||
rtfSC_L ,'L',
|
|
||||||
rtfSC_M ,'M',
|
|
||||||
rtfSC_N ,'N',
|
|
||||||
rtfSC_O ,'O',
|
|
||||||
rtfSC_P ,'P',
|
|
||||||
rtfSC_Q ,'Q',
|
|
||||||
rtfSC_R ,'R',
|
|
||||||
rtfSC_S ,'S',
|
|
||||||
rtfSC_T ,'T',
|
|
||||||
rtfSC_U ,'U',
|
|
||||||
rtfSC_V ,'V',
|
|
||||||
rtfSC_W ,'W',
|
|
||||||
rtfSC_X ,'X',
|
|
||||||
rtfSC_Y ,'Y',
|
|
||||||
rtfSC_Z ,'Z',
|
|
||||||
rtfSC_bracketleft ,'[',
|
|
||||||
rtfSC_backslash ,'\\',
|
|
||||||
rtfSC_bracketright ,']',
|
|
||||||
rtfSC_asciicircum ,'^',
|
|
||||||
rtfSC_underscore ,'_',
|
|
||||||
rtfSC_quoteleft ,'`',
|
|
||||||
rtfSC_a ,'a',
|
|
||||||
rtfSC_b ,'b',
|
|
||||||
rtfSC_c ,'c',
|
|
||||||
rtfSC_d ,'d',
|
|
||||||
rtfSC_e ,'e',
|
|
||||||
rtfSC_f ,'f',
|
|
||||||
rtfSC_g ,'g',
|
|
||||||
rtfSC_h ,'h',
|
|
||||||
rtfSC_i ,'i',
|
|
||||||
rtfSC_j ,'j',
|
|
||||||
rtfSC_k ,'k',
|
|
||||||
rtfSC_l ,'l',
|
|
||||||
rtfSC_m ,'m',
|
|
||||||
rtfSC_n ,'n',
|
|
||||||
rtfSC_o ,'o',
|
|
||||||
rtfSC_p ,'p',
|
|
||||||
rtfSC_q ,'q',
|
|
||||||
rtfSC_r ,'r',
|
|
||||||
rtfSC_s ,'s',
|
|
||||||
rtfSC_t ,'t',
|
|
||||||
rtfSC_u ,'u',
|
|
||||||
rtfSC_v ,'v',
|
|
||||||
rtfSC_w ,'w',
|
|
||||||
rtfSC_x ,'x',
|
|
||||||
rtfSC_y ,'y',
|
|
||||||
rtfSC_z ,'z',
|
|
||||||
rtfSC_braceleft ,'{',
|
|
||||||
rtfSC_bar ,'|',
|
|
||||||
rtfSC_braceright ,'}',
|
|
||||||
rtfSC_asciitilde ,'~',
|
|
||||||
rtfSC_nobrkspace ,0xa0,
|
|
||||||
rtfSC_exclamdown ,0xa1,
|
|
||||||
rtfSC_cent ,0xa2,
|
|
||||||
rtfSC_sterling ,0xa3,
|
|
||||||
rtfSC_currency ,0xa4,
|
|
||||||
rtfSC_yen ,0xa5,
|
|
||||||
rtfSC_brokenbar ,0xa6,
|
|
||||||
rtfSC_section ,0xa7,
|
|
||||||
rtfSC_dieresis ,0xa8,
|
|
||||||
rtfSC_copyright ,0xa9,
|
|
||||||
rtfSC_ordfeminine ,0xaa,
|
|
||||||
rtfSC_guillemotleft ,0xab,
|
|
||||||
rtfSC_logicalnot ,0xac,
|
|
||||||
rtfSC_opthyphen ,0xad,
|
|
||||||
rtfSC_registered ,0xae,
|
|
||||||
rtfSC_macron ,0xaf,
|
|
||||||
rtfSC_degree ,0xb0,
|
|
||||||
rtfSC_plusminus ,0xb1,
|
|
||||||
rtfSC_twosuperior ,0xb2,
|
|
||||||
rtfSC_threesuperior ,0xb3,
|
|
||||||
rtfSC_acute ,0xb4,
|
|
||||||
rtfSC_mu ,0xb5,
|
|
||||||
rtfSC_paragraph ,0xb6,
|
|
||||||
rtfSC_periodcentered ,0xb7,
|
|
||||||
rtfSC_cedilla ,0xb8,
|
|
||||||
rtfSC_onesuperior ,0xb9,
|
|
||||||
rtfSC_ordmasculine ,0xba,
|
|
||||||
rtfSC_guillemotright ,0xbb,
|
|
||||||
rtfSC_onequarter ,0xbc,
|
|
||||||
rtfSC_onehalf ,0xbd,
|
|
||||||
rtfSC_threequarters ,0xbe,
|
|
||||||
rtfSC_questiondown ,0xbf,
|
|
||||||
rtfSC_Agrave ,0xc0,
|
|
||||||
rtfSC_Aacute ,0xc1,
|
|
||||||
rtfSC_Acircumflex ,0xc2,
|
|
||||||
rtfSC_Atilde ,0xc3,
|
|
||||||
rtfSC_Adieresis ,0xc4,
|
|
||||||
rtfSC_Aring ,0xc5,
|
|
||||||
rtfSC_AE ,0xc6,
|
|
||||||
rtfSC_Ccedilla ,0xc7,
|
|
||||||
rtfSC_Egrave ,0xc8,
|
|
||||||
rtfSC_Eacute ,0xc9,
|
|
||||||
rtfSC_Ecircumflex ,0xca,
|
|
||||||
rtfSC_Edieresis ,0xcb,
|
|
||||||
rtfSC_Igrave ,0xcc,
|
|
||||||
rtfSC_Iacute ,0xcd,
|
|
||||||
rtfSC_Icircumflex ,0xce,
|
|
||||||
rtfSC_Idieresis ,0xcf,
|
|
||||||
rtfSC_Eth ,0xd0,
|
|
||||||
rtfSC_Ntilde ,0xd1,
|
|
||||||
rtfSC_Ograve ,0xd2,
|
|
||||||
rtfSC_Oacute ,0xd3,
|
|
||||||
rtfSC_Ocircumflex ,0xd4,
|
|
||||||
rtfSC_Otilde ,0xd5,
|
|
||||||
rtfSC_Odieresis ,0xd6,
|
|
||||||
rtfSC_multiply ,0xd7,
|
|
||||||
rtfSC_Oslash ,0xd8,
|
|
||||||
rtfSC_Ugrave ,0xd9,
|
|
||||||
rtfSC_Uacute ,0xda,
|
|
||||||
rtfSC_Ucircumflex ,0xdb,
|
|
||||||
rtfSC_Udieresis ,0xdc,
|
|
||||||
rtfSC_Yacute ,0xdd,
|
|
||||||
rtfSC_Thorn ,0xde,
|
|
||||||
rtfSC_germandbls ,0xdf,
|
|
||||||
rtfSC_agrave ,0xe0,
|
|
||||||
rtfSC_aacute ,0xe1,
|
|
||||||
rtfSC_acircumflex ,0xe2,
|
|
||||||
rtfSC_atilde ,0xe3,
|
|
||||||
rtfSC_adieresis ,0xe4,
|
|
||||||
rtfSC_aring ,0xe5,
|
|
||||||
rtfSC_ae ,0xe6,
|
|
||||||
rtfSC_ccedilla ,0xe7,
|
|
||||||
rtfSC_egrave ,0xe8,
|
|
||||||
rtfSC_eacute ,0xe9,
|
|
||||||
rtfSC_ecircumflex ,0xea,
|
|
||||||
rtfSC_edieresis ,0xeb,
|
|
||||||
rtfSC_igrave ,0xec,
|
|
||||||
rtfSC_iacute ,0xed,
|
|
||||||
rtfSC_icircumflex ,0xee,
|
|
||||||
rtfSC_idieresis ,0xef,
|
|
||||||
rtfSC_eth ,0xf0,
|
|
||||||
rtfSC_ntilde ,0xf1,
|
|
||||||
rtfSC_ograve ,0xf2,
|
|
||||||
rtfSC_oacute ,0xf3,
|
|
||||||
rtfSC_ocircumflex ,0xf4,
|
|
||||||
rtfSC_otilde ,0xf5,
|
|
||||||
rtfSC_odieresis ,0xf6,
|
|
||||||
rtfSC_divide ,0xf7,
|
|
||||||
rtfSC_oslash ,0xf8,
|
|
||||||
rtfSC_ugrave ,0xf9,
|
|
||||||
rtfSC_uacute ,0xfa,
|
|
||||||
rtfSC_ucircumflex ,0xfb,
|
|
||||||
rtfSC_udieresis ,0xfc,
|
|
||||||
rtfSC_yacute ,0xfd,
|
|
||||||
rtfSC_thorn ,0xfe,
|
|
||||||
rtfSC_ydieresis ,0xff
|
|
||||||
};
|
|
|
@ -1,112 +0,0 @@
|
||||||
/*
|
|
||||||
* RTF ANSI character set (\ansi) Symbol font map
|
|
||||||
*
|
|
||||||
* Field 1 is the standard character name which the character value in
|
|
||||||
* field 2 maps onto. (It doesn't mean "to produce the character in field 1,
|
|
||||||
* use the value in field 2.)
|
|
||||||
*
|
|
||||||
* The character value may be given either as a single character (which will be
|
|
||||||
* converted to the ASCII value of the character), or in numeric format, either
|
|
||||||
* in decimal or 0xyy as hex yy. Single or double quotes may be used to quote
|
|
||||||
* characters.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
int ansi_sym[] =
|
|
||||||
{
|
|
||||||
rtfSC_formula ,0x06,
|
|
||||||
rtfSC_nobrkhyphen ,0x1e,
|
|
||||||
rtfSC_opthyphen ,0x1f,
|
|
||||||
rtfSC_space ,' ',
|
|
||||||
rtfSC_exclam ,'!',
|
|
||||||
rtfSC_universal ,'"',
|
|
||||||
rtfSC_mathnumbersign ,'#',
|
|
||||||
rtfSC_existential ,'$',
|
|
||||||
rtfSC_percent ,'%',
|
|
||||||
rtfSC_ampersand ,'&',
|
|
||||||
rtfSC_suchthat ,'\\',
|
|
||||||
rtfSC_parenleft ,'(',
|
|
||||||
rtfSC_parenright ,')',
|
|
||||||
rtfSC_mathasterisk ,'*',
|
|
||||||
rtfSC_mathplus ,'+',
|
|
||||||
rtfSC_comma ,',',
|
|
||||||
rtfSC_mathminus ,'-',
|
|
||||||
rtfSC_period ,'.',
|
|
||||||
rtfSC_slash ,'/',
|
|
||||||
rtfSC_zero ,'0',
|
|
||||||
rtfSC_one ,'1',
|
|
||||||
rtfSC_two ,'2',
|
|
||||||
rtfSC_three ,'3',
|
|
||||||
rtfSC_four ,'4',
|
|
||||||
rtfSC_five ,'5',
|
|
||||||
rtfSC_six ,'6',
|
|
||||||
rtfSC_seven ,'7',
|
|
||||||
rtfSC_eight ,'8',
|
|
||||||
rtfSC_nine ,'9',
|
|
||||||
rtfSC_colon ,':',
|
|
||||||
rtfSC_semicolon ,';',
|
|
||||||
rtfSC_less ,'<',
|
|
||||||
rtfSC_mathequal ,'=',
|
|
||||||
rtfSC_greater ,'>',
|
|
||||||
rtfSC_question ,'?',
|
|
||||||
rtfSC_congruent ,'@',
|
|
||||||
rtfSC_Alpha ,'A',
|
|
||||||
rtfSC_Beta ,'B',
|
|
||||||
rtfSC_Chi ,'C',
|
|
||||||
rtfSC_Delta ,'D',
|
|
||||||
rtfSC_Epsilon ,'E',
|
|
||||||
rtfSC_Phi ,'F',
|
|
||||||
rtfSC_Gamma ,'G',
|
|
||||||
rtfSC_Eta ,'H',
|
|
||||||
rtfSC_Iota ,'I',
|
|
||||||
rtfSC_Kappa ,'K',
|
|
||||||
rtfSC_Lambda ,'L',
|
|
||||||
rtfSC_Mu ,'M',
|
|
||||||
rtfSC_Nu ,'N',
|
|
||||||
rtfSC_Omicron ,'O',
|
|
||||||
rtfSC_Pi ,'P',
|
|
||||||
rtfSC_Theta ,'Q',
|
|
||||||
rtfSC_Rho ,'R',
|
|
||||||
rtfSC_Sigma ,'S',
|
|
||||||
rtfSC_Tau ,'T',
|
|
||||||
rtfSC_Upsilon ,'U',
|
|
||||||
rtfSC_varsigma ,'V',
|
|
||||||
rtfSC_Omega ,'W',
|
|
||||||
rtfSC_Xi ,'X',
|
|
||||||
rtfSC_Psi ,'Y',
|
|
||||||
rtfSC_Zeta ,'Z',
|
|
||||||
rtfSC_bracketleft ,'[',
|
|
||||||
rtfSC_backslash ,'\\',
|
|
||||||
rtfSC_bracketright ,']',
|
|
||||||
rtfSC_asciicircum ,'^',
|
|
||||||
rtfSC_underscore ,'_',
|
|
||||||
rtfSC_quoteleft ,'`',
|
|
||||||
rtfSC_alpha ,'a',
|
|
||||||
rtfSC_beta ,'b',
|
|
||||||
rtfSC_chi ,'c',
|
|
||||||
rtfSC_delta ,'d',
|
|
||||||
rtfSC_epsilon ,'e',
|
|
||||||
rtfSC_phi ,'f',
|
|
||||||
rtfSC_gamma ,'g',
|
|
||||||
rtfSC_eta ,'h',
|
|
||||||
rtfSC_iota ,'i',
|
|
||||||
rtfSC_kappa ,'k',
|
|
||||||
rtfSC_lambda ,'l',
|
|
||||||
rtfSC_mu ,'m',
|
|
||||||
rtfSC_nu ,'n',
|
|
||||||
rtfSC_omicron ,'o',
|
|
||||||
rtfSC_pi ,'p',
|
|
||||||
rtfSC_theta ,'q',
|
|
||||||
rtfSC_rho ,'r',
|
|
||||||
rtfSC_sigma ,'s',
|
|
||||||
rtfSC_tau ,'t',
|
|
||||||
rtfSC_upsilon ,'u',
|
|
||||||
rtfSC_omega ,'w',
|
|
||||||
rtfSC_xi ,'x',
|
|
||||||
rtfSC_psi ,'y',
|
|
||||||
rtfSC_zeta ,'z',
|
|
||||||
rtfSC_braceleft ,'{',
|
|
||||||
rtfSC_bar ,'|',
|
|
||||||
rtfSC_braceright ,'}',
|
|
||||||
rtfSC_mathtilde ,'~'
|
|
||||||
};
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,35 +0,0 @@
|
||||||
/*
|
|
||||||
* Ritch Edit 32 class extra info
|
|
||||||
*
|
|
||||||
* Copyright 2000 Jean-Clauyde Batista
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __WINE_RICHED32_H
|
|
||||||
#define __WINE_RICHED32_H
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
|
|
||||||
#include "windef.h"
|
|
||||||
#include "winbase.h"
|
|
||||||
#include "winuser.h"
|
|
||||||
#include "richedit.h"
|
|
||||||
|
|
||||||
extern VOID RICHED32_Register (VOID);
|
|
||||||
extern VOID RICHED32_Unregister (VOID);
|
|
||||||
|
|
||||||
#endif /* __WINE_RICHED32_H */
|
|
|
@ -1,11 +1,10 @@
|
||||||
/*
|
/*
|
||||||
* RichEdit32 functions
|
* RichEdit32 functions
|
||||||
*
|
*
|
||||||
* This module is a simple wrapper for the edit controls.
|
* This module is a simple wrapper for the RichEdit 2.0 control
|
||||||
* At the point, it is good only for application who use the RICHEDIT
|
|
||||||
* control to display RTF text.
|
|
||||||
*
|
*
|
||||||
* Copyright 2000 by Jean-Claude Batista
|
* Copyright 2000 by Jean-Claude Batista
|
||||||
|
* Copyright 2005 Mike McCormack
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -29,728 +28,29 @@
|
||||||
#include "wingdi.h"
|
#include "wingdi.h"
|
||||||
#include "winreg.h"
|
#include "winreg.h"
|
||||||
#include "winerror.h"
|
#include "winerror.h"
|
||||||
#include "riched32.h"
|
#include "winuser.h"
|
||||||
#include "richedit.h"
|
#include "richedit.h"
|
||||||
#define NO_SHLWAPI_STREAM
|
|
||||||
#include "shlwapi.h"
|
#include "shlwapi.h"
|
||||||
|
|
||||||
#include "rtf.h"
|
|
||||||
#include "rtf2text.h"
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
|
||||||
#define ID_EDIT 1
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(richedit);
|
WINE_DEFAULT_DEBUG_CHANNEL(richedit);
|
||||||
|
|
||||||
HANDLE RICHED32_hHeap = NULL;
|
/* Window procedure of the RichEdit 1.0 control in riched20.dll */
|
||||||
/* LPSTR RICHED32_aSubclass = NULL; */
|
extern LRESULT WINAPI RichEdit10ANSIWndProc(HWND, UINT, WPARAM, LPARAM);
|
||||||
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]
|
* DllGetVersion [RICHED32.2]
|
||||||
*
|
*
|
||||||
* Retrieves version information of the 'RICHED32.DLL'
|
* Retrieves version information
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
*/
|
||||||
|
HRESULT WINAPI RICHED32_DllGetVersion (DLLVERSIONINFO *pdvi)
|
||||||
HRESULT WINAPI
|
|
||||||
RICHED32_DllGetVersion (DLLVERSIONINFO *pdvi)
|
|
||||||
{
|
{
|
||||||
TRACE("\n");
|
TRACE("\n");
|
||||||
|
|
||||||
if (pdvi->cbSize != sizeof(DLLVERSIONINFO)) {
|
if (pdvi->cbSize != sizeof(DLLVERSIONINFO))
|
||||||
|
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
}
|
|
||||||
|
|
||||||
pdvi->dwMajorVersion = 4;
|
pdvi->dwMajorVersion = 4;
|
||||||
pdvi->dwMinorVersion = 0;
|
pdvi->dwMinorVersion = 0;
|
||||||
|
@ -760,99 +60,47 @@ RICHED32_DllGetVersion (DLLVERSIONINFO *pdvi)
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/* Unregisters the window class. */
|
||||||
* DESCRIPTION:
|
static BOOL RICHED32_Unregister(void)
|
||||||
* Registers the window class.
|
|
||||||
*
|
|
||||||
* PARAMETER(S):
|
|
||||||
* None
|
|
||||||
*
|
|
||||||
* RETURN:
|
|
||||||
* None
|
|
||||||
*/
|
|
||||||
VOID RICHED32_Register(void)
|
|
||||||
{
|
|
||||||
WNDCLASSA wndClass;
|
|
||||||
|
|
||||||
TRACE("\n");
|
|
||||||
|
|
||||||
ZeroMemory(&wndClass, sizeof(WNDCLASSA));
|
|
||||||
wndClass.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
|
|
||||||
wndClass.lpfnWndProc = RICHED32_WindowProc;
|
|
||||||
wndClass.cbClsExtra = 0;
|
|
||||||
wndClass.cbWndExtra = RTFInfoOffset + sizeof(RTFControl_Info*);
|
|
||||||
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");
|
TRACE("\n");
|
||||||
|
|
||||||
UnregisterClassA(RICHEDIT_CLASS10A, NULL);
|
UnregisterClassA(RICHEDIT_CLASS10A, NULL);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/* Registers the window class. */
|
||||||
* DESCRIPTION:
|
static BOOL RICHED32_Register(void)
|
||||||
* Initialize edit control class info
|
|
||||||
*/
|
|
||||||
VOID RICHEDIT_InitEditControlInfo(void)
|
|
||||||
{
|
{
|
||||||
WNDCLASSA wcEdit;
|
WNDCLASSA wndClass;
|
||||||
|
|
||||||
if (GetClassInfoA(0, "edit", &wcEdit))
|
ZeroMemory(&wndClass, sizeof(WNDCLASSA));
|
||||||
|
wndClass.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
|
||||||
|
wndClass.lpfnWndProc = RichEdit10ANSIWndProc;
|
||||||
|
wndClass.cbClsExtra = 0;
|
||||||
|
wndClass.cbWndExtra = 4;
|
||||||
|
wndClass.hCursor = LoadCursorA(0, (LPSTR)IDC_ARROW);
|
||||||
|
wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||||
|
wndClass.lpszClassName = RICHEDIT_CLASS10A; /* WC_RICHED32A; */
|
||||||
|
|
||||||
|
RegisterClassA(&wndClass);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialization function */
|
||||||
|
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||||
|
{
|
||||||
|
TRACE("\n");
|
||||||
|
switch (fdwReason)
|
||||||
{
|
{
|
||||||
lpfnEditWndProc = wcEdit.lpfnWndProc;
|
case DLL_PROCESS_ATTACH:
|
||||||
RTFInfoOffset = wcEdit.cbWndExtra;
|
DisableThreadLibraryCalls(hinstDLL);
|
||||||
|
return RICHED32_Register();
|
||||||
|
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
return RICHED32_Unregister();
|
||||||
}
|
}
|
||||||
else
|
return TRUE;
|
||||||
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);
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
1568
dlls/richedit/rtf.h
1568
dlls/richedit/rtf.h
File diff suppressed because it is too large
Load Diff
|
@ -1,2 +0,0 @@
|
||||||
void WriterInit (RTF_Info *);
|
|
||||||
int BeginFile (RTF_Info *);
|
|
|
@ -1,356 +0,0 @@
|
||||||
const char *stdCharName[] =
|
|
||||||
{
|
|
||||||
"nothing",
|
|
||||||
"space",
|
|
||||||
"exclam",
|
|
||||||
"quotedbl",
|
|
||||||
"numbersign",
|
|
||||||
"dollar",
|
|
||||||
"percent",
|
|
||||||
"ampersand",
|
|
||||||
"quoteright",
|
|
||||||
"parenleft",
|
|
||||||
"parenright",
|
|
||||||
"asterisk",
|
|
||||||
"plus",
|
|
||||||
"comma",
|
|
||||||
"hyphen",
|
|
||||||
"period",
|
|
||||||
"slash",
|
|
||||||
"zero",
|
|
||||||
"one",
|
|
||||||
"two",
|
|
||||||
"three",
|
|
||||||
"four",
|
|
||||||
"five",
|
|
||||||
"six",
|
|
||||||
"seven",
|
|
||||||
"eight",
|
|
||||||
"nine",
|
|
||||||
"colon",
|
|
||||||
"semicolon",
|
|
||||||
"less",
|
|
||||||
"equal",
|
|
||||||
"greater",
|
|
||||||
"question",
|
|
||||||
"at",
|
|
||||||
"A",
|
|
||||||
"B",
|
|
||||||
"C",
|
|
||||||
"D",
|
|
||||||
"E",
|
|
||||||
"F",
|
|
||||||
"G",
|
|
||||||
"H",
|
|
||||||
"I",
|
|
||||||
"J",
|
|
||||||
"K",
|
|
||||||
"L",
|
|
||||||
"M",
|
|
||||||
"N",
|
|
||||||
"O",
|
|
||||||
"P",
|
|
||||||
"Q",
|
|
||||||
"R",
|
|
||||||
"S",
|
|
||||||
"T",
|
|
||||||
"U",
|
|
||||||
"V",
|
|
||||||
"W",
|
|
||||||
"X",
|
|
||||||
"Y",
|
|
||||||
"Z",
|
|
||||||
"bracketleft",
|
|
||||||
"backslash",
|
|
||||||
"bracketright",
|
|
||||||
"asciicircum",
|
|
||||||
"underscore",
|
|
||||||
"quoteleft",
|
|
||||||
"a",
|
|
||||||
"b",
|
|
||||||
"c",
|
|
||||||
"d",
|
|
||||||
"e",
|
|
||||||
"f",
|
|
||||||
"g",
|
|
||||||
"h",
|
|
||||||
"i",
|
|
||||||
"j",
|
|
||||||
"k",
|
|
||||||
"l",
|
|
||||||
"m",
|
|
||||||
"n",
|
|
||||||
"o",
|
|
||||||
"p",
|
|
||||||
"q",
|
|
||||||
"r",
|
|
||||||
"s",
|
|
||||||
"t",
|
|
||||||
"u",
|
|
||||||
"v",
|
|
||||||
"w",
|
|
||||||
"x",
|
|
||||||
"y",
|
|
||||||
"z",
|
|
||||||
"braceleft",
|
|
||||||
"bar",
|
|
||||||
"braceright",
|
|
||||||
"asciitilde",
|
|
||||||
"exclamdown",
|
|
||||||
"cent",
|
|
||||||
"sterling",
|
|
||||||
"fraction",
|
|
||||||
"yen",
|
|
||||||
"florin",
|
|
||||||
"section",
|
|
||||||
"currency",
|
|
||||||
"quotedblleft",
|
|
||||||
"guillemotleft",
|
|
||||||
"guilsinglleft",
|
|
||||||
"guilsinglright",
|
|
||||||
"fi",
|
|
||||||
"fl",
|
|
||||||
"endash",
|
|
||||||
"dagger",
|
|
||||||
"daggerdbl",
|
|
||||||
"periodcentered",
|
|
||||||
"paragraph",
|
|
||||||
"bullet",
|
|
||||||
"quotesinglbase",
|
|
||||||
"quotedblbase",
|
|
||||||
"quotedblright",
|
|
||||||
"guillemotright",
|
|
||||||
"ellipsis",
|
|
||||||
"perthousand",
|
|
||||||
"questiondown",
|
|
||||||
"grave",
|
|
||||||
"acute",
|
|
||||||
"circumflex",
|
|
||||||
"tilde",
|
|
||||||
"macron",
|
|
||||||
"breve",
|
|
||||||
"dotaccent",
|
|
||||||
"dieresis",
|
|
||||||
"ring",
|
|
||||||
"cedilla",
|
|
||||||
"hungarumlaut",
|
|
||||||
"ogonek",
|
|
||||||
"caron",
|
|
||||||
"emdash",
|
|
||||||
"AE",
|
|
||||||
"ordfeminine",
|
|
||||||
"Lslash",
|
|
||||||
"Oslash",
|
|
||||||
"OE",
|
|
||||||
"ordmasculine",
|
|
||||||
"ae",
|
|
||||||
"dotlessi",
|
|
||||||
"lslash",
|
|
||||||
"oslash",
|
|
||||||
"oe",
|
|
||||||
"germandbls",
|
|
||||||
"Aacute",
|
|
||||||
"Acircumflex",
|
|
||||||
"Adieresis",
|
|
||||||
"Agrave",
|
|
||||||
"Aring",
|
|
||||||
"Atilde",
|
|
||||||
"Ccedilla",
|
|
||||||
"Eacute",
|
|
||||||
"Ecircumflex",
|
|
||||||
"Edieresis",
|
|
||||||
"Egrave",
|
|
||||||
"Eth",
|
|
||||||
"Iacute",
|
|
||||||
"Icircumflex",
|
|
||||||
"Idieresis",
|
|
||||||
"Igrave",
|
|
||||||
"Ntilde",
|
|
||||||
"Oacute",
|
|
||||||
"Ocircumflex",
|
|
||||||
"Odieresis",
|
|
||||||
"Ograve",
|
|
||||||
"Otilde",
|
|
||||||
"Scaron",
|
|
||||||
"Thorn",
|
|
||||||
"Uacute",
|
|
||||||
"Ucircumflex",
|
|
||||||
"Udieresis",
|
|
||||||
"Ugrave",
|
|
||||||
"Yacute",
|
|
||||||
"Ydieresis",
|
|
||||||
"aacute",
|
|
||||||
"acircumflex",
|
|
||||||
"adieresis",
|
|
||||||
"agrave",
|
|
||||||
"aring",
|
|
||||||
"atilde",
|
|
||||||
"brokenbar",
|
|
||||||
"ccedilla",
|
|
||||||
"copyright",
|
|
||||||
"degree",
|
|
||||||
"divide",
|
|
||||||
"eacute",
|
|
||||||
"ecircumflex",
|
|
||||||
"edieresis",
|
|
||||||
"egrave",
|
|
||||||
"eth",
|
|
||||||
"iacute",
|
|
||||||
"icircumflex",
|
|
||||||
"idieresis",
|
|
||||||
"igrave",
|
|
||||||
"logicalnot",
|
|
||||||
"minus",
|
|
||||||
"multiply",
|
|
||||||
"ntilde",
|
|
||||||
"oacute",
|
|
||||||
"ocircumflex",
|
|
||||||
"odieresis",
|
|
||||||
"ograve",
|
|
||||||
"onehalf",
|
|
||||||
"onequarter",
|
|
||||||
"onesuperior",
|
|
||||||
"otilde",
|
|
||||||
"plusminus",
|
|
||||||
"registered",
|
|
||||||
"thorn",
|
|
||||||
"threequarters",
|
|
||||||
"threesuperior",
|
|
||||||
"trademark",
|
|
||||||
"twosuperior",
|
|
||||||
"uacute",
|
|
||||||
"ucircumflex",
|
|
||||||
"udieresis",
|
|
||||||
"ugrave",
|
|
||||||
"yacute",
|
|
||||||
"ydieresis",
|
|
||||||
"Alpha",
|
|
||||||
"Beta",
|
|
||||||
"Chi",
|
|
||||||
"Delta",
|
|
||||||
"Epsilon",
|
|
||||||
"Phi",
|
|
||||||
"Gamma",
|
|
||||||
"Eta",
|
|
||||||
"Iota",
|
|
||||||
"Kappa",
|
|
||||||
"Lambda",
|
|
||||||
"Mu",
|
|
||||||
"Nu",
|
|
||||||
"Omicron",
|
|
||||||
"Pi",
|
|
||||||
"Theta",
|
|
||||||
"Rho",
|
|
||||||
"Sigma",
|
|
||||||
"Tau",
|
|
||||||
"Upsilon",
|
|
||||||
"varUpsilon",
|
|
||||||
"Omega",
|
|
||||||
"Xi",
|
|
||||||
"Psi",
|
|
||||||
"Zeta",
|
|
||||||
"alpha",
|
|
||||||
"beta",
|
|
||||||
"chi",
|
|
||||||
"delta",
|
|
||||||
"epsilon",
|
|
||||||
"phi",
|
|
||||||
"varphi",
|
|
||||||
"gamma",
|
|
||||||
"eta",
|
|
||||||
"iota",
|
|
||||||
"kappa",
|
|
||||||
"lambda",
|
|
||||||
"mu",
|
|
||||||
"nu",
|
|
||||||
"omicron",
|
|
||||||
"pi",
|
|
||||||
"varpi",
|
|
||||||
"theta",
|
|
||||||
"vartheta",
|
|
||||||
"rho",
|
|
||||||
"sigma",
|
|
||||||
"varsigma",
|
|
||||||
"tau",
|
|
||||||
"upsilon",
|
|
||||||
"omega",
|
|
||||||
"xi",
|
|
||||||
"psi",
|
|
||||||
"zeta",
|
|
||||||
"nobrkspace",
|
|
||||||
"nobrkhyphen",
|
|
||||||
"lessequal",
|
|
||||||
"greaterequal",
|
|
||||||
"infinity",
|
|
||||||
"integral",
|
|
||||||
"notequal",
|
|
||||||
"radical",
|
|
||||||
"radicalex",
|
|
||||||
"approxequal",
|
|
||||||
"apple",
|
|
||||||
"partialdiff",
|
|
||||||
"opthyphen",
|
|
||||||
"formula",
|
|
||||||
"lozenge",
|
|
||||||
"universal",
|
|
||||||
"existential",
|
|
||||||
"suchthat",
|
|
||||||
"congruent",
|
|
||||||
"therefore",
|
|
||||||
"perpendicular",
|
|
||||||
"minute",
|
|
||||||
"club",
|
|
||||||
"diamond",
|
|
||||||
"heart",
|
|
||||||
"spade",
|
|
||||||
"arrowboth",
|
|
||||||
"arrowleft",
|
|
||||||
"arrowup",
|
|
||||||
"arrowright",
|
|
||||||
"arrowdown",
|
|
||||||
"second",
|
|
||||||
"proportional",
|
|
||||||
"equivalence",
|
|
||||||
"arrowvertex",
|
|
||||||
"arrowhorizex",
|
|
||||||
"carriagereturn",
|
|
||||||
"aleph",
|
|
||||||
"Ifraktur",
|
|
||||||
"Rfraktur",
|
|
||||||
"weierstrass",
|
|
||||||
"circlemultiply",
|
|
||||||
"circleplus",
|
|
||||||
"emptyset",
|
|
||||||
"intersection",
|
|
||||||
"union",
|
|
||||||
"propersuperset",
|
|
||||||
"reflexsuperset",
|
|
||||||
"notsubset",
|
|
||||||
"propersubset",
|
|
||||||
"reflexsubset",
|
|
||||||
"element",
|
|
||||||
"notelement",
|
|
||||||
"angle",
|
|
||||||
"gradient",
|
|
||||||
"product",
|
|
||||||
"logicaland",
|
|
||||||
"logicalor",
|
|
||||||
"arrowdblboth",
|
|
||||||
"arrowdblleft",
|
|
||||||
"arrowdblup",
|
|
||||||
"arrowdblright",
|
|
||||||
"arrowdbldown",
|
|
||||||
"angleleft",
|
|
||||||
"registersans",
|
|
||||||
"copyrightsans",
|
|
||||||
"trademarksans",
|
|
||||||
"angleright",
|
|
||||||
"mathplus",
|
|
||||||
"mathminus",
|
|
||||||
"mathasterisk",
|
|
||||||
"mathnumbersign",
|
|
||||||
"dotmath",
|
|
||||||
"mathequal",
|
|
||||||
"mathtilde",
|
|
||||||
(char *) NULL
|
|
||||||
};
|
|
|
@ -1,269 +0,0 @@
|
||||||
/*
|
|
||||||
* text-writer -- RTF-to-text translation writer code.
|
|
||||||
*
|
|
||||||
* Read RTF input, write text of document (text extraction).
|
|
||||||
*
|
|
||||||
* Wrapper must call WriterInit() once before processing any files,
|
|
||||||
* then set up input and call BeginFile() for each input file.
|
|
||||||
*
|
|
||||||
* This installs callbacks for the text and control token classes.
|
|
||||||
* The control class is necessary so that special characters such as
|
|
||||||
* \par, \tab, \sect, etc. can be converted.
|
|
||||||
*
|
|
||||||
* It's problematic what to do with text in headers and footers, and
|
|
||||||
* what to do about tables.
|
|
||||||
*
|
|
||||||
* This really is quite a stupid program, for instance, it could keep
|
|
||||||
* track of the current leader character and dump that out when a tab
|
|
||||||
* is encountered.
|
|
||||||
*
|
|
||||||
* 04 Feb 91 Paul DuBois dubois@primate.wisc.edu
|
|
||||||
*
|
|
||||||
* This software may be redistributed without restriction and used for
|
|
||||||
* any purpose whatsoever.
|
|
||||||
*
|
|
||||||
* 04 Feb 91
|
|
||||||
* -Created.
|
|
||||||
* 27 Feb 91
|
|
||||||
* - Updated for distribution 1.05.
|
|
||||||
* 13 Jul 93
|
|
||||||
* - Updated to compile under THINK C 6.0.
|
|
||||||
* 31 Aug 93
|
|
||||||
* - Added Mike Sendall's entries for Macintosh char map.
|
|
||||||
* 07 Sep 93
|
|
||||||
* - Uses charset map and output sequence map for character translation.
|
|
||||||
* 11 Mar 94
|
|
||||||
* - Updated for 1.10 distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include "rtf.h"
|
|
||||||
#include "rtf2text.h"
|
|
||||||
#include "wine/debug.h"
|
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(richedit);
|
|
||||||
|
|
||||||
static void TextClass (RTF_Info *info);
|
|
||||||
static void ControlClass (RTF_Info *info);
|
|
||||||
static void Destination (RTF_Info *info);
|
|
||||||
static void SpecialChar (RTF_Info *info);
|
|
||||||
static void PutStdChar (RTF_Info *info, int stdCode);
|
|
||||||
static void PutLitChar (RTF_Info *info, int c);
|
|
||||||
static void PutLitStr (RTF_Info *info, char *s);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize the writer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
WriterInit (RTF_Info *info )
|
|
||||||
{
|
|
||||||
RTFReadOutputMap (info, info->outMap,1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
BeginFile (RTF_Info *info )
|
|
||||||
{
|
|
||||||
/* install class callbacks */
|
|
||||||
|
|
||||||
RTFSetClassCallback (info, rtfText, TextClass);
|
|
||||||
RTFSetClassCallback (info, rtfControl, ControlClass);
|
|
||||||
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Write out a character. rtfMajor contains the input character, rtfMinor
|
|
||||||
* contains the corresponding standard character code.
|
|
||||||
*
|
|
||||||
* If the input character isn't in the charset map, try to print some
|
|
||||||
* representation of it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
TextClass (RTF_Info *info)
|
|
||||||
{
|
|
||||||
char buf[rtfBufSiz];
|
|
||||||
|
|
||||||
TRACE("\n");
|
|
||||||
|
|
||||||
if (info->rtfFormat == SF_TEXT)
|
|
||||||
PutLitChar (info, info->rtfMajor);
|
|
||||||
else if (info->rtfMinor != rtfSC_nothing)
|
|
||||||
PutStdChar (info, info->rtfMinor);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (info->rtfMajor < 128) /* in ASCII range */
|
|
||||||
sprintf (buf, "[[%c]]", info->rtfMajor);
|
|
||||||
else
|
|
||||||
sprintf (buf, "[[\\'%02x]]", info->rtfMajor);
|
|
||||||
PutLitStr (info, buf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
ControlClass (RTF_Info *info)
|
|
||||||
{
|
|
||||||
TRACE("\n");
|
|
||||||
switch (info->rtfMajor)
|
|
||||||
{
|
|
||||||
case rtfDestination:
|
|
||||||
Destination (info);
|
|
||||||
break;
|
|
||||||
case rtfSpecialChar:
|
|
||||||
SpecialChar (info);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This function notices destinations that should be ignored
|
|
||||||
* and skips to their ends. This keeps, for instance, picture
|
|
||||||
* data from being considered as plain text.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
Destination (RTF_Info *info)
|
|
||||||
{
|
|
||||||
|
|
||||||
TRACE("\n");
|
|
||||||
|
|
||||||
switch (info->rtfMinor)
|
|
||||||
{
|
|
||||||
case rtfPict:
|
|
||||||
case rtfFNContSep:
|
|
||||||
case rtfFNContNotice:
|
|
||||||
case rtfInfo:
|
|
||||||
case rtfIndexRange:
|
|
||||||
case rtfITitle:
|
|
||||||
case rtfISubject:
|
|
||||||
case rtfIAuthor:
|
|
||||||
case rtfIOperator:
|
|
||||||
case rtfIKeywords:
|
|
||||||
case rtfIComment:
|
|
||||||
case rtfIVersion:
|
|
||||||
case rtfIDoccomm:
|
|
||||||
RTFSkipGroup (info);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The reason these use the rtfSC_xxx thingies instead of just writing
|
|
||||||
* out ' ', '-', '"', etc., is so that the mapping for these characters
|
|
||||||
* can be controlled by the text-map file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void SpecialChar (RTF_Info *info)
|
|
||||||
{
|
|
||||||
|
|
||||||
TRACE("\n");
|
|
||||||
|
|
||||||
switch (info->rtfMinor)
|
|
||||||
{
|
|
||||||
case rtfPage:
|
|
||||||
case rtfSect:
|
|
||||||
case rtfRow:
|
|
||||||
case rtfLine:
|
|
||||||
case rtfPar:
|
|
||||||
PutLitChar (info, '\n');
|
|
||||||
break;
|
|
||||||
case rtfCell:
|
|
||||||
PutStdChar (info, rtfSC_space); /* make sure cells are separated */
|
|
||||||
break;
|
|
||||||
case rtfNoBrkSpace:
|
|
||||||
PutStdChar (info, rtfSC_nobrkspace);
|
|
||||||
break;
|
|
||||||
case rtfTab:
|
|
||||||
PutLitChar (info, '\t');
|
|
||||||
break;
|
|
||||||
case rtfNoBrkHyphen:
|
|
||||||
PutStdChar (info, rtfSC_nobrkhyphen);
|
|
||||||
break;
|
|
||||||
case rtfBullet:
|
|
||||||
PutStdChar (info, rtfSC_bullet);
|
|
||||||
break;
|
|
||||||
case rtfEmDash:
|
|
||||||
PutStdChar (info, rtfSC_emdash);
|
|
||||||
break;
|
|
||||||
case rtfEnDash:
|
|
||||||
PutStdChar (info, rtfSC_endash);
|
|
||||||
break;
|
|
||||||
case rtfLQuote:
|
|
||||||
PutStdChar (info, rtfSC_quoteleft);
|
|
||||||
break;
|
|
||||||
case rtfRQuote:
|
|
||||||
PutStdChar (info, rtfSC_quoteright);
|
|
||||||
break;
|
|
||||||
case rtfLDblQuote:
|
|
||||||
PutStdChar (info, rtfSC_quotedblleft);
|
|
||||||
break;
|
|
||||||
case rtfRDblQuote:
|
|
||||||
PutStdChar (info, rtfSC_quotedblright);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Eventually this should keep track of the destination of the
|
|
||||||
* current state and only write text when in the initial state.
|
|
||||||
*
|
|
||||||
* If the output sequence is unspecified in the output map, write
|
|
||||||
* the character's standard name instead. This makes map deficiencies
|
|
||||||
* obvious and provides incentive to fix it. :-)
|
|
||||||
*/
|
|
||||||
|
|
||||||
void PutStdChar (RTF_Info *info, int stdCode)
|
|
||||||
{
|
|
||||||
|
|
||||||
char *oStr = (char *) NULL;
|
|
||||||
char buf[rtfBufSiz];
|
|
||||||
|
|
||||||
/* if (stdCode == rtfSC_nothing)
|
|
||||||
RTFPanic ("Unknown character code, logic error\n");
|
|
||||||
*/
|
|
||||||
TRACE("\n");
|
|
||||||
|
|
||||||
oStr = info->outMap[stdCode];
|
|
||||||
if (oStr == (char *) NULL) /* no output sequence in map */
|
|
||||||
{
|
|
||||||
sprintf (buf, "[[%s]]", RTFStdCharName (info, stdCode));
|
|
||||||
oStr = buf;
|
|
||||||
}
|
|
||||||
PutLitStr (info, oStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PutLitChar (RTF_Info *info, int c)
|
|
||||||
{
|
|
||||||
if( info->dwOutputCount >= ( sizeof info->OutputBuffer - 1 ) )
|
|
||||||
RTFFlushOutputBuffer( info );
|
|
||||||
info->OutputBuffer[info->dwOutputCount++] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void RTFFlushOutputBuffer( RTF_Info *info )
|
|
||||||
{
|
|
||||||
info->OutputBuffer[info->dwOutputCount] = 0;
|
|
||||||
SendMessageA( info->hwndEdit, EM_REPLACESEL, FALSE, (LPARAM) info->OutputBuffer );
|
|
||||||
info->dwOutputCount = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void PutLitStr (RTF_Info *info, char *str )
|
|
||||||
{
|
|
||||||
int len = strlen( str );
|
|
||||||
if( ( len + info->dwOutputCount + 1 ) > sizeof info->OutputBuffer )
|
|
||||||
RTFFlushOutputBuffer( info );
|
|
||||||
if( ( len + 1 ) >= sizeof info->OutputBuffer )
|
|
||||||
{
|
|
||||||
SendMessageA( info->hwndEdit, EM_REPLACESEL, FALSE, (LPARAM) str );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
strcpy( &info->OutputBuffer[info->dwOutputCount], str );
|
|
||||||
info->dwOutputCount += len;
|
|
||||||
}
|
|
|
@ -1,172 +0,0 @@
|
||||||
/*
|
|
||||||
* Output sequence map for rtf2text
|
|
||||||
*
|
|
||||||
* Field 1 is the standard character name. Field 2 is the output sequence
|
|
||||||
* to produce for that character.
|
|
||||||
*
|
|
||||||
* The output sequence is simply a string of characters. If it contains
|
|
||||||
* whitespace, it may be quoted. If it contains quotes, it may be quoted
|
|
||||||
* with a different quote character.
|
|
||||||
*
|
|
||||||
* characters in ASCII range (32-127
|
|
||||||
*/
|
|
||||||
|
|
||||||
const char *text_map[] = {
|
|
||||||
"space" ," ",
|
|
||||||
"exclam" ,"!",
|
|
||||||
"quotedbl" ,"\"",
|
|
||||||
"numbersign" ,"#",
|
|
||||||
"dollar" ,"$",
|
|
||||||
"percent" ,"%",
|
|
||||||
"ampersand" ,"&",
|
|
||||||
"quoteright" ,"'",
|
|
||||||
"parenleft" ,"(",
|
|
||||||
"parenright" ,")",
|
|
||||||
"asterisk" ,"*",
|
|
||||||
"plus" ,"+",
|
|
||||||
"comma" ,",",
|
|
||||||
"hyphen" ,"-",
|
|
||||||
"period" ,".",
|
|
||||||
"slash" ,"/",
|
|
||||||
"zero" ,"0",
|
|
||||||
"one" ,"1",
|
|
||||||
"two" ,"2",
|
|
||||||
"three" ,"3",
|
|
||||||
"four" ,"4",
|
|
||||||
"five" ,"5",
|
|
||||||
"six" ,"6",
|
|
||||||
"seven" ,"7",
|
|
||||||
"eight" ,"8",
|
|
||||||
"nine" ,"9",
|
|
||||||
"colon" ,":",
|
|
||||||
"semicolon" ,";",
|
|
||||||
"less" ,"<",
|
|
||||||
"equal" ,"=",
|
|
||||||
"greater" ,">",
|
|
||||||
"question" ,"?",
|
|
||||||
"at" ,"@",
|
|
||||||
"A" ,"A",
|
|
||||||
"B" ,"B",
|
|
||||||
"C" ,"C",
|
|
||||||
"D" ,"D",
|
|
||||||
"E" ,"E",
|
|
||||||
"F" ,"F",
|
|
||||||
"G" ,"G",
|
|
||||||
"H" ,"H",
|
|
||||||
"I" ,"I",
|
|
||||||
"J" ,"J",
|
|
||||||
"K" ,"K",
|
|
||||||
"L" ,"L",
|
|
||||||
"M" ,"M",
|
|
||||||
"N" ,"N",
|
|
||||||
"O" ,"O",
|
|
||||||
"P" ,"P",
|
|
||||||
"Q" ,"Q",
|
|
||||||
"R" ,"R",
|
|
||||||
"S" ,"S",
|
|
||||||
"T" ,"T",
|
|
||||||
"U" ,"U",
|
|
||||||
"V" ,"V",
|
|
||||||
"W" ,"W",
|
|
||||||
"X" ,"X",
|
|
||||||
"Y" ,"Y",
|
|
||||||
"Z" ,"Z",
|
|
||||||
"bracketleft" ,"[",
|
|
||||||
"backslash" ,"\\",
|
|
||||||
"bracketright" ,"]",
|
|
||||||
"asciicircum" ,"^",
|
|
||||||
"underscore" ,"_",
|
|
||||||
"quoteleft" ,"`",
|
|
||||||
"a" ,"a",
|
|
||||||
"b" ,"b",
|
|
||||||
"c" ,"c",
|
|
||||||
"d" ,"d",
|
|
||||||
"e" ,"e",
|
|
||||||
"f" ,"f",
|
|
||||||
"g" ,"g",
|
|
||||||
"h" ,"h",
|
|
||||||
"i" ,"i",
|
|
||||||
"j" ,"j",
|
|
||||||
"k" ,"k",
|
|
||||||
"l" ,"l",
|
|
||||||
"m" ,"m",
|
|
||||||
"n" ,"n",
|
|
||||||
"o" ,"o",
|
|
||||||
"p" ,"p",
|
|
||||||
"q" ,"q",
|
|
||||||
"r" ,"r",
|
|
||||||
"s" ,"s",
|
|
||||||
"t" ,"t",
|
|
||||||
"u" ,"u",
|
|
||||||
"v" ,"v",
|
|
||||||
"w" ,"w",
|
|
||||||
"x" ,"x",
|
|
||||||
"y" ,"y",
|
|
||||||
"z" ,"z",
|
|
||||||
"braceleft" ,"{",
|
|
||||||
"bar" ,"|",
|
|
||||||
"braceright" ,"}",
|
|
||||||
"asciitilde" ,"~",
|
|
||||||
"AE" ,"AE",
|
|
||||||
"OE" ,"OE",
|
|
||||||
"acute" ,"'",
|
|
||||||
"ae" ,"ae",
|
|
||||||
"angleleft" ,"<",
|
|
||||||
"angleright" ,">",
|
|
||||||
"arrowboth" ,"<->",
|
|
||||||
"arrowdblboth" ,"<=>",
|
|
||||||
"arrowdblleft" ,"<=",
|
|
||||||
"arrowdblright" ,"=>",
|
|
||||||
"arrowleft" ,"<-",
|
|
||||||
"arrowright" ,"->",
|
|
||||||
"bullet" ,"o",
|
|
||||||
"cent" ,"cent",
|
|
||||||
"circumflex" ,"^",
|
|
||||||
"copyright" ,"(c)",
|
|
||||||
"copyrightsans" ,"(c)",
|
|
||||||
"degree" ,"deg.",
|
|
||||||
"divide" ,"/",
|
|
||||||
"dotlessi" ,"i",
|
|
||||||
"ellipsis" ,"...",
|
|
||||||
"emdash" ,"--",
|
|
||||||
"endash" ,"-",
|
|
||||||
"fi" ,"fi",
|
|
||||||
"fl" ,"fl",
|
|
||||||
"fraction" ,"/",
|
|
||||||
"germandbls" ,"ss",
|
|
||||||
"grave" ,"`",
|
|
||||||
"greaterequal" ,">=",
|
|
||||||
"guillemotleft" ,"<<",
|
|
||||||
"guillemotright" ,">>",
|
|
||||||
"guilsinglleft" ,"<",
|
|
||||||
"guilsinglright" ,">",
|
|
||||||
"lessequal" ,"<=",
|
|
||||||
"logicalnot" ,"~",
|
|
||||||
"mathasterisk" ,"*",
|
|
||||||
"mathequal" ,"=",
|
|
||||||
"mathminus" ,"-",
|
|
||||||
"mathnumbersign" ,"#",
|
|
||||||
"mathplus" ,"+",
|
|
||||||
"mathtilde" ,"~",
|
|
||||||
"minus" ,"-",
|
|
||||||
"mu" ,"u",
|
|
||||||
"multiply" ,"x",
|
|
||||||
"nobrkhyphen" ,"-",
|
|
||||||
"nobrkspace" ," ",
|
|
||||||
"notequal" ,"!=",
|
|
||||||
"oe" ,"oe",
|
|
||||||
"onehalf" ,"1/2",
|
|
||||||
"onequarter" ,"1/4",
|
|
||||||
"periodcentered" ,".",
|
|
||||||
"plusminus" ,"+/-",
|
|
||||||
"quotedblbase" ,",,",
|
|
||||||
"quotedblleft" ,"\"",
|
|
||||||
"quotedblright" ,"\"",
|
|
||||||
"quotesinglbase" ,",",
|
|
||||||
"registered" ,"reg.",
|
|
||||||
"registersans" ,"reg.",
|
|
||||||
"threequarters" ,"3/4",
|
|
||||||
"tilde" ,"~",
|
|
||||||
"trademark" ,"(TM)",
|
|
||||||
"trademarksans" ,"(TM)"
|
|
||||||
};
|
|
Loading…
Reference in New Issue