Page 1 of 1

Consulta sobre brush en ventana principal [SOLUCIONADO]

PostPosted: 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.

Image

El código del prg principal es:

Code: Select all  Expand view
#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

PostPosted: 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

PostPosted: 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 view
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 view
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

PostPosted: 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:

Image

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

PostPosted: 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

PostPosted: 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

PostPosted: 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.

Image

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

Image

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

Image

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.

Image

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 ... xt0PiucZ6I

Un saludo y gracias

Re: Consulta sobre brush en ventana principal

PostPosted: 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

PostPosted: 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

PostPosted: 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