Page 1 of 1
Richedit5- ¿No es posible más de uno a la vez? (solucionado)
Posted: Tue Jul 23, 2019 7:59 am
by AngelSalom
Hola amigos, me explico. Quiero mostrar a la vez varios ficheros RTF, para ello creo varias ventanas y en cada una creo un control RichEdit5. Se muestra bien pero al cerrar la aplicación se genera un GPF que se puede ver en hb_out.log , ¿no es posible mostrar más de un objeto RTF a la vez? , es decir ... mostrarse se muestran pero claro, el fallo al cerrar la aplicación no es viable.
Adjunto pequeño ejemplo para probar
Code: Select all
#include "fivewin.ch"
#include "RichEdi5.ch"
Function Main()
Local oWnd
Local oWndRich1, oRich1, cRich1
Local oWndRich2, oRich2, cRich2
DEFINE WINDOW oWnd FROM 1, 1 TO 20, 70 TITLE "Test Multiple Richedit5" MDI
DEFINE WINDOW oWndRich1 MDICHILD OF oWnd FROM 2, 2 TO 20, 50 TITLE "Rich1" COLOR "B/W"
@ 0, 0 RICHEDIT5 oRich1 VAR cRich1 OF oWndRich1 NOBORDER HSCROLL
ACTIVATE WINDOW oWndRich1
DEFINE WINDOW oWndRich2 MDICHILD OF oWnd FROM 2, 55 TO 20, 105 TITLE "Rich2" COLOR "B/W"
@ 0, 0 RICHEDIT5 oRich2 VAR cRich2 OF oWndRich2 NOBORDER HSCROLL
ACTIVATE WINDOW oWndRich2
ACTIVATE WINDOW oWnd MAXIMIZED
Return (nil)
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 9:21 am
by cnavarro
Angel, acabo de probarlo y a mi no me da ningun GPF
Ejecuto, escribo en ambos y cierro la ventana principal, y "no problem"
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 9:31 am
by AngelSalom
Si, no muestra un GPF, pero mira si te genera un hb_out.log con la "petada".
Copio/pego
Code: Select all
Application Internal Error - C:\si\nlen\fwh1906\samples\rich.exe
Terminated at: 2019-07-23 11:31:19
Unrecoverable error 6005: Exception error:
Exception Code:C0000005 ACCESS_VIOLATION
Exception Address:618AC050
EAX:00000000 EBX:618AC050 ECX:618AC050 EDX:00000000
ESI:00000000 EDI:00000008 EBP:0019DE74
CS:EIP:0023:618AC050 SS:ESP:002B:0019DE4C
DS:002B ES:002B FS:0053 GS:002B
Flags:00010206
Exception Parameters: 00000000 618AC050
CS:EIP:
SS:ESP: 764B635B 00EB0AD8 00000008 00B90C16 00000000 00000000 DCBAABCD 618AC050 00000008 00000000 0019DF58 764A729C 618AC050 00EB0AD8 00000008 00B90C16
C stack:
EIP: EBP: Frame: OldEBP, RetAddr, Params...
618AC050 0019DE74 0019DF58 764A729C 618AC050 00EB0AD8 00000008 00B90C16 00000000 8937EA77 618AC050 00EB0AD8
764A729C 0019DF58 0019DF90 76496C42 618AC050 00000000 00000008 00B90C16 00000000 00000000 00000000 00000000
76496C42 0019DF90 0019DFB8 00415152 FFFF0B53 00EB0AD8 00000008 00B90C16 00000000 00000008 00000000 00EB0AD8
00415152 0019DFB8 0019DFD8 00415B5B 00EB0AD8 00000008 00B90C16 00000000 00000006 00415B3C
00415B5B 0019DFD8 0019E004 764B635B 00EB0AD8 00000008 00B90C16 00000000 00000000 DCBAABCD 00415B3C 00000008
764B635B 0019E004 0019E0E8 764A729C 00415B3C 00EB0AD8 00000008 00B90C16 00000000 8937D5C7 40000000 C0000388
764A729C 0019E0E8 0019E14C 764A6E3A 00415B3C 00000000 00000008 00B90C16 00000000 00220000 00000001 8937D463
764A6E3A 0019E14C 0019E188 764B37EF 01226F60 00000000 00000008 00B90C16 00000000 00415B3C 009E5140 00000000
764B37EF 0019E188 0019E1F0 76F028ED 0019E1A4 00000020 0019E348 76F02820 0019E1C4 01226F60 00000000 00000008
76F028ED 0019E1F0 0019E234 76493287 012005A0 00000000 0122E8D0 00000000 00000022 00000000 00592A98 004C1A47
76493287 0019E234 0019E248 76493088 00000000 00000000 00000001
76493088 0019E248 0019E274 764B635B 00D30AD6 00000022 00000000 00000000 00000000 DCBAABCD 00592A98 00000022
764B635B 0019E274 0019E358 764A729C 00592A98 00D30AD6 00000022 00000000 00000000 8937D677 00592A98 00D30AD6
764A729C 0019E358 0019E390 76496C42 00592A98 00000000 00000022 00000000 00000000 00000000 00000000 00000000
76496C42 0019E390 0019E3B8 00415152 00592A98 00D30AD6 00000022 00000000 00000000 00000022 00000000 00D30AD6
00415152 0019E3B8 0019E3D8 00415B5B 00D30AD6 00000022 00000000 00000000 00000003 00415B3C
00415B5B 0019E3D8 0019E404 764B635B 00D30AD6 00000022 00000000 00000000 00000000 DCBAABCD 00415B3C 00000022
764B635B 0019E404 0019E4E8 764A729C 00415B3C 00D30AD6 00000022 00000000 00000000 8937D1C7 40000000 C0000388
764A729C 0019E4E8 0019E54C 764A6E3A 00415B3C 00000000 00000022 00000000 00000000 00220000 00000001 8937D063
764A6E3A 0019E54C 0019E588 764B37EF 0122E8D0 00000000 00000022 00000000 00000000 00415B3C 00000000 0019E5F4
Modules:
00400000 003DC000 C:\si\nlen\fwh1906\samples\rich.exe
76E90000 0019C000 C:\WINDOWS\SYSTEM32\ntdll.dll
74670000 000E0000 C:\WINDOWS\System32\KERNEL32.DLL
74A80000 001FA000 C:\WINDOWS\System32\KERNELBASE.dll
76E00000 0007E000 C:\WINDOWS\System32\ADVAPI32.DLL
76610000 000C0000 C:\WINDOWS\System32\msvcrt.dll
745F0000 00079000 C:\WINDOWS\System32\sechost.dll
76CF0000 000BF000 C:\WINDOWS\System32\RPCRT4.dll
74500000 00020000 C:\WINDOWS\System32\SspiCli.dll
744F0000 0000A000 C:\WINDOWS\System32\CRYPTBASE.dll
747F0000 00062000 C:\WINDOWS\System32\bcryptPrimitives.dll
74860000 000FA000 C:\WINDOWS\System32\COMDLG32.DLL
768E0000 00278000 C:\WINDOWS\System32\combase.dll
76B60000 00122000 C:\WINDOWS\System32\ucrtbase.dll
75050000 00089000 C:\WINDOWS\System32\shcore.dll
76470000 00199000 C:\WINDOWS\System32\USER32.dll
747D0000 00017000 C:\WINDOWS\System32\win32u.dll
76420000 00023000 C:\WINDOWS\System32\GDI32.dll
74EE0000 00166000 C:\WINDOWS\System32\gdi32full.dll
74A00000 00080000 C:\WINDOWS\System32\msvcp_win.dll
766F0000 00044000 C:\WINDOWS\System32\SHLWAPI.dll
750E0000 0054E000 C:\WINDOWS\System32\SHELL32.dll
74540000 0003B000 C:\WINDOWS\System32\cfgmgr32.dll
75B20000 005FC000 C:\WINDOWS\System32\windows.storage.dll
76290000 0001C000 C:\WINDOWS\System32\profapi.dll
74770000 00054000 C:\WINDOWS\System32\powrprof.dll
745E0000 0000F000 C:\WINDOWS\System32\kernel.appcore.dll
76450000 00012000 C:\WINDOWS\System32\cryptsp.dll
76750000 000FC000 C:\WINDOWS\System32\OLE32.DLL
74960000 00096000 C:\WINDOWS\System32\OLEAUT32.DLL
73D80000 0006B000 C:\WINDOWS\SYSTEM32\WINSPOOL.DRV
766D0000 00019000 C:\WINDOWS\System32\bcrypt.dll
744E0000 00008000 C:\WINDOWS\SYSTEM32\VERSION.DLL
67890000 0008E000 C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.17763.615_none_588d17fb78ae80f3\COMCTL32.DLL
73250000 00018000 C:\WINDOWS\SYSTEM32\MPR.DLL
74490000 00006000 C:\WINDOWS\SYSTEM32\MSIMG32.DLL
73210000 00024000 C:\WINDOWS\SYSTEM32\WINMM.DLL
6AA80000 00029000 C:\WINDOWS\SYSTEM32\OLEDLG.DLL
71220000 0016F000 C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17763.615_none_7e4c6b06762ec7a8\GDIPLUS.DLL
73AA0000 0017E000 C:\WINDOWS\SYSTEM32\PROPSYS.dll
744A0000 00033000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
731E0000 00023000 C:\WINDOWS\SYSTEM32\WINMMBASE.dll
76120000 00025000 C:\WINDOWS\System32\IMM32.DLL
739C0000 0007B000 C:\WINDOWS\system32\uxtheme.dll
76150000 0013E000 C:\WINDOWS\System32\MSCTF.dll
72410000 00026000 C:\WINDOWS\system32\dwmapi.dll
74C80000 00199000 C:\WINDOWS\System32\CRYPT32.dll
76740000 0000E000 C:\WINDOWS\System32\MSASN1.dll
76C90000 0005E000 C:\WINDOWS\System32\coml2.dll
76850000 00081000 C:\WINDOWS\System32\clbcatq.dll
61590000 00122000 C:\Windows\System32\Windows.Globalization.dll
72200000 0001D000 C:\Windows\System32\bcp47mrm.dll
732A0000 00046000 C:\Windows\System32\Bcp47Langs.dll
64E40000 00020000 C:\WINDOWS\SYSTEM32\globinputhost.dll
6D610000 0004D000 C:\WINDOWS\system32\dataexchange.dll
6D3E0000 00229000 C:\WINDOWS\system32\d3d11.dll
6D280000 0015F000 C:\WINDOWS\system32\dcomp.dll
6D1D0000 000A4000 C:\WINDOWS\system32\dxgi.dll
6E9C0000 001A3000 C:\WINDOWS\system32\twinapi.appcore.dll
6E9A0000 0001E000 C:\WINDOWS\system32\RMCLIENT.dll
6E580000 00086000 C:\WINDOWS\System32\TextInputFramework.dll
6E280000 0026A000 C:\WINDOWS\System32\CoreUIComponents.dll
6E4F0000 0008F000 C:\WINDOWS\System32\CoreMessaging.dll
730B0000 00029000 C:\WINDOWS\SYSTEM32\ntmarta.dll
73390000 000DB000 C:\WINDOWS\SYSTEM32\wintypes.dll
585B0000 000EB000 C:\Windows\System32\Windows.UI.dll
58510000 00091000 C:\Windows\System32\InputHost.dll
6B390000 00508000 C:\Windows\System32\d2d1.dll
74280000 0020F000 C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17763.615_none_4d6178211b9c4dda\comctl32.DLL
Called from SENDMESSAGE(0)
Called from (b)TWINDOW(621) in .\source\classes\WINDOW.PRG
Called from TMDICLIENT:SENDMSG(0) in .\source\classes\WINDOW.PRG
Called from TMDICLIENT:CHILDCLOSE(190) in .\source\classes\MDICLIEN.PRG
Called from TMDICHILD:END(289) in .\source\classes\MDICHILD.PRG
Called from TMDICLIENT:LCLOSEALL(205) in .\source\classes\MDICLIEN.PRG
Called from TMDIFRAME:END(277) in .\source\classes\MDIFRAME.PRG
Called from TMDIFRAME:SYSCOMMAND(2597) in .\source\classes\WINDOW.PRG
Called from TMDIFRAME:HANDLEEVENT(0)
Called from _FWH(3546) in .\source\classes\WINDOW.PRG
Called from WINRUN(0)
Called from TMDIFRAME:ACTIVATE(1078) in .\source\classes\WINDOW.PRG
Called from MAIN(20) in rich.prg
------------------------------------------------------------------------
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 9:46 am
by cnavarro
Angel, a eso me refería, no da ningún tipo de problema ni genera ningún fichero .log
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 9:56 am
by AngelSalom
Vaya, compilo con buildh de los samples ... Quizá falte añadir alguna librería?
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 9:59 am
by cnavarro
Yo también lo he construído con el buildh.bat
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 10:06 am
by AngelSalom
¿Algo del sistema operativo? Lo estoy probando con Windows 10 prof. 64 bits
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 10:12 am
by cnavarro
AngelSalom wrote:¿Algo del sistema operativo? Lo estoy probando con Windows 10 prof. 64 bits
Igual que yo
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 10:15 am
by cnavarro
Angel, prueba a modificar la clase en el metodo Destroy
Code: Select all
METHOD Destroy() INLINE ::Super:Destroy() //, ::SetOleUnInit()
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 10:23 am
by AngelSalom
Diste en el clavo
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 10:26 am
by cnavarro
Angel, ya que te pones, puedes probarlo asi?
Code: Select all
METHOD Destroy() INLINE ( ::Super:Destroy() , if( ::nInst == 0, ::SetOleUnInit(), ) )
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 10:31 am
by AngelSalom
También perfecto.
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 10:33 am
by cnavarro
AngelSalom wrote:También perfecto.
Angel, ésta última es la implementación correcta
Re: Richedit5 - ¿No es posible más de uno a la vez?
Posted: Tue Jul 23, 2019 10:38 am
by AngelSalom
De acuerdo, hago un override del método.