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.