Page 1 of 1
Consulta sobre brush en ventana principal [SOLUCIONADO]
Posted: Wed May 05, 2021 11:10 am
by Ramón J.
Hola a todos
Veréis, tengo una aplicación con una pantalla principal con fondo blanco y en el centro una imagen del logo sobre fondo blanco también. El caso es que, después de trabajar un rato y sin saber la causa (quizá sea de falta de refresco), el fondo de la pantalla principal se queda en negro y la letra del SET MESSAGE se queda en negrita.

El código del prg principal es:
Code: Select all | Expand
#include "FiveWin.ch"
#include "ord.ch"
#include "XBrowse.Ch"
ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT
REQUEST HB_LANG_ESWIN
static oWnd
Extern set
//----------------------------------------------------------------------------//
function Main()
local oBrush, oBar, oBmp, cRuta
// REQUEST DBFCDX
RDDSETDEFAULT ( "DBFCDX" )
SET AUTOSHARE TO 0
SET DELETED ON
SET _3DLOOK ON
SET DATE TO FRENCH
SET CENTURY ON
SET EPOCH TO 1990
//SET EXCLUSIVE OFF
* set multiple on
SetBalloon( .T. )
SkinButtons()
HB_LANGSELECT( 'ESWIN' )
HB_SetCodePage("ESWIN")
DEFINE BRUSH oBrush COLOR RGB(255,255,255) // FiveWin new predefined Brushes
DEFINE WINDOW oWnd FROM 4, 4 TO 25, 75 TITLE "Empresa";
MDI VSCROLL;
STYLE nOr(WS_CAPTION, WS_MINIMIZEBOX, WS_MAXIMIZEBOX, WS_THICKFRAME);
MENU BuildMenu();
BRUSH oBrush
DEFINE BUTTONBAR oBar OF oWnd
DEFINE BUTTON FILENAME "\COMPARTIDO\REGSAT\WINSAT\BITMAPS\PROCESS.bmp" OF oBar GROUP ;
MESSAGE "Abrir SAT" ACTION Clients() ;
TOOLTIP "Iniciar SAT"
DEFINE BUTTON FILENAME "\COMPARTIDO\REGSAT\WINSAT\BITMAPS\QUESTION.bmp" OF oBar ;
MESSAGE "Información del sistema" ACTION MsgAbout();
TOOLTIP "Información del sistema"
DEFINE BUTTON FILENAME "\COMPARTIDO\REGSAT\WINSAT\BITMAPS\EXIT.bmp" OF oBar ;
ACTION If( MsgYesNo( "¿Desea salir de la aplicación?", "Seleccion opción" ), oWnd:End(), ) ;
MESSAGE "Fin de sesión";
TOOLTIP "Salir de la aplicación"
//SET MESSAGE OF oWnd TO FWVERSION + FWCOPYRIGHT CLOCK DATE
SET MESSAGE OF oWnd TO "© 2021 " CENTER
@ 4, 16 BITMAP oBmp FILENAME "\COMPARTIDO\REGSAT\WINSAT\BITMAPS\LOGO.png" NOBORDER OF oWnd ;
ON CLICK( oBmp:lStretch := ! oBmp:lStretch, oBmp:Refresh( .t. ) )
// ACTIVATE WINDOW oWnd MAXIMIZED ON RESIZE oBmp:Center() ON INIT CLIENTSAT()
ACTIVATE WINDOW oWnd MAXIMIZED ;
ON PAINT PalBmpDraw( hDC, 150, 250, oBmp:hBitmap );
ON CLICK CLIENTSAT()
oBmp:End()
return nil
¿Qué esta mal?
Un saludo y muchas gracias
Re: Consulta sobre brush en ventana principal
Posted: Wed May 05, 2021 7:02 pm
by Antonio Linares
Ramón,
Eso se debe a que la aplicación esta consumiendo recursos que no libera.
Tienes que usar propio detector de pérdida de recursos que incorpora FWH para que localices de donde viene:
http://wiki.fivetechsoft.com/doku.php?id=fivewin_function_setresdebug
Re: Consulta sobre brush en ventana principal
Posted: Wed May 05, 2021 8:44 pm
by Ramón J.
Gracias, Antonio
He probado lo que me has dicho sobre una función que sospecho que está consumiendo recursos y me crea dos ficheros txt con los siguiente resultados:
Code: Select all | Expand
05/05/2021 22:33:37: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : 0 )
<-TFONT:END(303) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1027) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827) <-TBTNBMP:HANDLEEVENT(2051) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097)
------------------------------------------------------------
05/05/2021 22:33:37: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -1 )
<-TFONT:END(303) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1027) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827) <-TBTNBMP:HANDLEEVENT(2051) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097)
------------------------------------------------------------
05/05/2021 22:33:37: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -2 )
<-TFONT:END(303) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1027) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827) <-TBTNBMP:HANDLEEVENT(2051) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097)
------------------------------------------------------------
05/05/2021 22:33:37: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -3 )
<-TFONT:END(303) <-TCONTROL:DESTROY(2293) <-TMSGBAR:DESTROY(334) <-TWINDOW:HANDLEEVENT(0) <-TMSGBAR:HANDLEEVENT(1827) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097) <-MAIN(71)
------------------------------------------------------------
05/05/2021 22:33:38: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -1 )
<-TFONT:END(303) <-TMDIFRAME:DESTROY(2293) <-TMDIFRAME:HANDLEEVENT(0) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097) <-MAIN(71)
------------------------------------------------------------
05/05/2021 22:33:38: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -2 )
<-TFONT:END(303) <-TMDICLIENT:DESTROY(2293) <-TMDICLIENT:HANDLEEVENT(0) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097) <-MAIN(71)
------------------------------------------------------------
05/05/2021 22:33:38: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -3 )
<-TFONT:END(303) <-TBAR:DESTROY(2293) <-TWINDOW:HANDLEEVENT(0) <-TBAR:HANDLEEVENT(1827) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097) <-MAIN(71)
------------------------------------------------------------
05/05/2021 22:33:38: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -4 )
<-TFONT:END(303) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1027) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827) <-TBTNBMP:HANDLEEVENT(2051) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097)
------------------------------------------------------------
05/05/2021 22:33:38: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -5 )
<-TFONT:END(303) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1027) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827) <-TBTNBMP:HANDLEEVENT(2051) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097)
------------------------------------------------------------
05/05/2021 22:33:38: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -6 )
<-TFONT:END(303) <-TCONTROL:DESTROY(2293) <-TBTNBMP:DESTROY(1027) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1827) <-TBTNBMP:HANDLEEVENT(2051) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097)
------------------------------------------------------------
05/05/2021 22:33:38: EXCESS RELEASE OF FONT Segoe UI[ hFont : 0] ( nCount : -7 )
<-TFONT:END(303) <-TCONTROL:DESTROY(2293) <-TMSGBAR:DESTROY(334) <-TWINDOW:HANDLEEVENT(0) <-TMSGBAR:HANDLEEVENT(1827) <-_FWH(3559) <-WINRUN(0) <-TMDIFRAME:ACTIVATE(1097) <-MAIN(71)
------------------------------------------------------------
Y el fichero checkres con el siguiente resultado:
Code: Select all | Expand
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- FONT,-1878388372,TMDIFRAME:GETFONT(2995)->TMDICLIENT:GETFONT(2972)->TMDICLIENT:NEW(147)->TMDIFRAME:NEW(181)->MAIN(42)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BRUSH,-720367263,TBAR:SETCOLOR(2770)->TBAR:NEW(179)->MAIN(44)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BRUSH,-804255310,TCONTROL:SETCOLOR(2770)->TBTNBMP:SETCOLOR(2105)->TBTNBMP:NEWBAR(585)->MAIN(51)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,-586872691,(b)TWINDOW(585)->TBTNBMP:READIMAGE(0)->TBTNBMP:SETIMAGES(1135)->TBTNBMP:LOADBITMAPS(1163)->TBTNBMP:NEWBAR(588)->MAIN(51)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,1392841029,(b)TWINDOW(585)->TBTNBMP:READIMAGE(0)->TBTNBMP:SETIMAGES(1135)->TBTNBMP:LOADBITMAPS(1163)->TBTNBMP:NEWBAR(588)->MAIN(55)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,2131038363,(b)TWINDOW(585)->TBTNBMP:READIMAGE(0)->TBTNBMP:SETIMAGES(1135)->TBTNBMP:LOADBITMAPS(1163)->TBTNBMP:NEWBAR(588)->MAIN(60)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,50663396,TBITMAP:LOADIMAGE(826)->TBITMAP:NEW(179)->MAIN(66)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,553980135,XBROWSENEW(17146)->REGISTRO(65)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,2063927839,XBROWSENEW(17146)->REGISTRO(65)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,436539574,XBROWSENEW(17146)->REGISTRO(65)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,553980148,TXBRWCOLUMN:ADJUST(12939)->TXBROWSE:ADJUST(1488)->TXBROWSE:INITIATE(1332)->__OBJSENDMSG(0)->OSEND(291)->ASEND(259)->TDIALOG:INITIATE(805)->TDIALOG:HANDLEEVENT(1124)->DIALOGBOXINDIRECT(0)->TDIALOG:ACTIVATE(304)->REGISTRO(132)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BRUSH,-1257238145,TCONTROL:SETCOLOR(2770)->TBTNBMP:SETCOLOR(2105)->TXBRWCOLUMN:CREATEBUTTONS(15316)->TXBRWCOLUMN:ADJUST(12939)->TXBROWSE:ADJUST(1488)->TXBROWSE:INITIATE(1332)->__OBJSENDMSG(0)->OSEND(291)->ASEND(259)->TDIALOG:INITIATE(805)->TDIALOG:HANDLEEVENT(1124)->DIALOGBOXINDIRECT(0)->TDIALOG:ACTIVATE(304)->REGISTRO(132)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,1610944700,TXBRWCOLUMN:ADJUST(12939)->TXBROWSE:ADJUST(1488)->TXBROWSE:INITIATE(1332)->__OBJSENDMSG(0)->OSEND(291)->ASEND(259)->TDIALOG:INITIATE(805)->TDIALOG:HANDLEEVENT(1124)->DIALOGBOXINDIRECT(0)->TDIALOG:ACTIVATE(304)->REGISTRO(132)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,-402321265,TXBRWCOLUMN:ADJUST(12939)->TXBROWSE:ADJUST(1488)->TXBROWSE:INITIATE(1332)->__OBJSENDMSG(0)->OSEND(291)->ASEND(259)->TDIALOG:INITIATE(805)->TDIALOG:HANDLEEVENT(1124)->DIALOGBOXINDIRECT(0)->TDIALOG:ACTIVATE(304)->REGISTRO(132)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,1074072179,TXBRWCOLUMN:ADJUST(12939)->TXBROWSE:ADJUST(1488)->TXBROWSE:INITIATE(1332)->__OBJSENDMSG(0)->OSEND(291)->ASEND(259)->TDIALOG:INITIATE(805)->TDIALOG:HANDLEEVENT(1124)->DIALOGBOXINDIRECT(0)->TDIALOG:ACTIVATE(304)->REGISTRO(132)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,-821751672,TXBRWCOLUMN:ADJUST(12939)->TXBROWSE:ADJUST(1488)->TXBROWSE:INITIATE(1332)->__OBJSENDMSG(0)->OSEND(291)->ASEND(259)->TDIALOG:INITIATE(805)->TDIALOG:HANDLEEVENT(1124)->DIALOGBOXINDIRECT(0)->TDIALOG:ACTIVATE(304)->REGISTRO(132)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BMP,1795494403,TXBRWCOLUMN:ADJUST(12939)->TXBROWSE:ADJUST(1488)->TXBROWSE:INITIATE(1332)->__OBJSENDMSG(0)->OSEND(291)->ASEND(259)->TDIALOG:INITIATE(805)->TDIALOG:HANDLEEVENT(1124)->DIALOGBOXINDIRECT(0)->TDIALOG:ACTIVATE(304)->REGISTRO(132)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- BRUSH,219155319,TXBROWSE:PAINT(2248)->TXBROWSE:DISPLAY(2127)->TCONTROL:HANDLEEVENT(1793)->TXBROWSE:HANDLEEVENT(11856)->_FWH(3559)->SYSREFRESH(0)->MODIFICAR(497)->(b)REGISTRO(128)->TBUTTON:CLICK(179)->TBUTTON:HANDLEEVENT(1781)->_FWH(3559)->SENDMESSAGE(0)->TDIALOG:COMMAND(433)->TWINDOW:HANDLEEVENT(0)->TDIALOG:HANDLEEVENT(1140)->DIALOGBOXINDIRECT(0)->TDIALOG:ACTIVATE(304)->REGISTRO(132)->(b)BUILDMENU(100)->TMENU:COMMAND(1563)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->MAIN(71)
05/05/2021 22:31:23: C:\Winsat\DIARIO.exe -- ====================================================================================================
Uso botones png que al finalizar la función los destruyo con obtn:end() y no uso fuentes definidas.
Re: Consulta sobre brush en ventana principal
Posted: Thu May 06, 2021 7:15 pm
by Ramón J.
Antonio
Tengo una duda: ¿la función CheckRes() hay que ponerlo en el prg principal? Te lo comento porque después de ejecutar varias funciones que tiene la aplicación y al terminar me crea el checkres.txt que crea están en blanco:

Sé que está consumiendo recurso y por eso, como tú dices, el fondo de la aplicación se pone negro. La duda que tengo es cómo saber qué función es la que está consumiendo memoria y no la libera cuando termina.
Re: Consulta sobre brush en ventana principal
Posted: Thu May 06, 2021 7:21 pm
by Antonio Linares
Ramón,
Estamos revisando los datos que nos has facilitado para ver que pueda estar ocurriendo.
Cuando aparece blanco es que todo esta bien y no ha consumido recursos. Entra en una opción y sal de la app hasta que descubras
que opción es la que consume los recursos y te aparecerá información en el checkres.txt y nos lo muestras, gracias
Re: Consulta sobre brush en ventana principal
Posted: Thu May 06, 2021 7:34 pm
by Ramón J.
Gracias, Antonio, ya lo iré probando y te cuento. En modo local no suele dar problemas, es en red cuando la aplicación -bien sea por el ancho de banda de ese momento, bien por la propia aplicación que no gestiona bien los recursos- cuando da el fallo.
Ya te contaré.
Mucha gracias, Antonio
Re: Consulta sobre brush en ventana principal
Posted: Tue May 11, 2021 12:11 pm
by Ramón J.
Hola a todos
Antonio, he preparado una pequeña aplicación de ejemplo para que veas el funcionamiento.

Cuando se le da vairas veces (entrar y escape, entrar y escape...) al logo central se pone en negrita el copyright del SET MESSAGE

Cuando se entra a la opción de "Registro de Documentos" se muestra un xbrowse con municipios.

Pues bien, al igual que he comentado al principio, cuando se le da varias veces a "Nueva entrada" y escape contínuamente, la letra del xbrowse se pone se pone en negrita y además sin seguir una regla.

No sé dónde está el fallo, ya que los botones png se destruyen -creo- al finalizar la función y se hace un refresh, pero no consigo saber dónde esta el problema.
Aquí está el enlace para la descarga del ejemplo completo:
https://mega.nz/file/tow1xaRT#QARNIXKZs ... xt0PiucZ6IUn saludo y gracias
Re: Consulta sobre brush en ventana principal
Posted: Tue May 11, 2021 6:32 pm
by AngelSalom
Recuerdo que me peleé hace tiempo con esto y era un quebradero de cabeza.
Al final era una fuente que se eliminaba cuando no debía.
Re: Consulta sobre brush en ventana principal
Posted: Wed May 12, 2021 2:00 pm
by Antonio Linares
Ramón,
Prueba a quitar estas líneas y vuelve a probarla:
oBtn1:end()
oBtn2:end()
sysrefresh()
Prueba tambien a quitar esta línea:
SkinButtons()
Re: Consulta sobre brush en ventana principal
Posted: Mon May 17, 2021 11:33 am
by Ramón J.
Hola a todos
Antonio, tenías razón. El problema estaba en "matar" los botones basados en imágenes, tanto de bmp como de png, cosa que hasta tenía como norma una vez finalizada la función que los contenía. También he eliminado el brush:end(), pero no ha sido necesario eliminar la funcionar SkinButtons().
Muchas gracias