Hola Roberto,
estoy intentando realizar una funcion que coloque una imagen BMP como fondo en una ventana
sin que interfiera con la visualización y funcionamiento de los controles que aparecen en ella
(ej. TAB, GRID, botones, etc). Como veras en el ejemplo que te adjunto tengo un problema, si en
ON INIT de la ventana no coloco
SendMessage (GetFormHandle ("ventana"), WM_PAINT, 0, 0 )
el fondo no se visualiza hasta que se active algun control que obligue a actualizar la ventana.
Como puedo hacer que funcione sin tener que usar ON INIT, lo mismo sucede con los comandos DRAW LINE IN WINDOW
ya que la idea de asignar la funcion de visualizacion de la imagen a un codeblock
aadd ( _HMG_SYSDATA [ 102 ] , block_BMP)
la saque del archivo h_graph.prg
Obiamente la función en C tiene mil mejoras posibles, ej. cada vez que la funcion se invoca se carga la imagen desde el
archivo.bmp o de los recursos, en vez de cargarla una unica vez y guardar los handles liberandolos al final del programa.
Pero esto ultimo me obliga a que el usuario invoque explicitamente (ej en ON RELEASE) una funcion que los libere.
¿existe alguna forma interna de hacerlo sin que el usuario lo haga explicitamente?
Desde ya muchas gracias, saludos
Claudio Soto
PD: Seria posible que en futuras versiones de MINIGUI existiese una funcion nativa que coloque una imagen (BMP,JPG o GIF) de
fondo en una ventana
Roberto Heeeelp!!!
Moderator: Rathinagiri
- srvet_claudio
- Posts: 2224
- Joined: Thu Feb 25, 2010 8:43 pm
- Location: Uruguay
- Contact:
Roberto Heeeelp!!!
- Attachments
-
- SET_WIN_BMP.rar
- (1.23 MiB) Downloaded 222 times
- Roberto Lopez
- HMG Founder
- Posts: 4023
- Joined: Wed Jul 30, 2008 6:43 pm
Re: Roberto Heeeelp!!!
The function Init() (h_init.prg) is executed at app start and the function ReleaseAllWindows() is executed at app end.srvet_claudio wrote:Hola Roberto,
estoy intentando realizar una funcion que coloque
Como puedo hacer que funcione sin tener que usar ON INIT,
You could use those for your purposes.
//
La función Init() es ejecutada al inicio de la aplicacióny la función ReleaseAllWindows() al final de la applicación.
Podrías usarlas para manejar las tutinas de iicio y finalización que requieres.
[/quote]srvet_claudio wrote: PD: Seria posible que en futuras versiones de MINIGUI existiese una funcion nativa que coloque una imagen (BMP,JPG o GIF) de
fondo en una ventana
I've added to m TODO list / lo he agregado a mi lista de pendientes.
Regards/Saludos,
Roberto
(Veritas Filia Temporis)
Roberto
(Veritas Filia Temporis)
Re: Roberto Heeeelp!!!
srvet_claudio wrote:Hola Roberto,
estoy intentando realizar una funcion que coloque una imagen BMP como fondo en una ventana
sin que interfiera con la visualización y funcionamiento de los controles que aparecen en ella
(ej. TAB, GRID, botones, etc). Como veras en el ejemplo que te adjunto tengo un problema, si en
ON INIT de la ventana no coloco
SendMessage (GetFormHandle ("ventana"), WM_PAINT, 0, 0 )
el fondo no se visualiza hasta que se active algun control que obligue a actualizar la ventana.
Como puedo hacer que funcione sin tener que usar ON INIT, lo mismo sucede con los comandos DRAW LINE IN WINDOW
ya que la idea de asignar la funcion de visualizacion de la imagen a un codeblock
aadd ( _HMG_SYSDATA [ 102 ] , block_BMP)
la saque del archivo h_graph.prg
Obiamente la función en C tiene mil mejoras posibles, ej. cada vez que la funcion se invoca se carga la imagen desde el
archivo.bmp o de los recursos, en vez de cargarla una unica vez y guardar los handles liberandolos al final del programa.
Pero esto ultimo me obliga a que el usuario invoque explicitamente (ej en ON RELEASE) una funcion que los libere.
¿existe alguna forma interna de hacerlo sin que el usuario lo haga explicitamente?
Desde ya muchas gracias, saludos
Claudio Soto
PD: Seria posible que en futuras versiones de MINIGUI existiese una funcion nativa que coloque una imagen (BMP,JPG o GIF) de
fondo en una ventana
Hi friends,
My friends, please try it in "ON PAINT". I think that work.
My best regards,
- srvet_claudio
- Posts: 2224
- Joined: Thu Feb 25, 2010 8:43 pm
- Location: Uruguay
- Contact:
Re: Roberto Heeeelp!!!
Gracias Roberto por tu ayuda,
pero por ahora voy a seguir usando la forma manual (ON INIT) prefiero no modificar los archivos fuentes (h_init.prg y h_windows.prg) y volverlos a compilar. Me parece que salvo casos impresindibles no deberíamos modificar los fuentes para mantener la compatibilidad entre nuestras aplicaciones. Admiro y respeto mucho tu trabajo, creo que la modificación de las librerías estandar debe ser monopolio exclusivo tuyo. Esto no implica que nosotros los usuarios no podamos intentar aportar alguna idea o función/librería externa, pero creo que siempre respetando el estandar.
Es solo una idea, tal vez podrías agregar en el futuro alguna función tipo StarApp y EndApp, de manera que cada llamada por ej.
StarApp proc1 ... StarApp procN genere una lista de procedures que se ejecutan una a continuación de la otra cuando comienza la aplicación. Esto permitiría crear funciones de asignación/liberación de recursos sin la intervención del usuario de la función.
Ej.
Procedure cargar_imagen
Static flag := .F.
If flag = F
StarApp acciones_necesarias ()
EndApp liberar_recursos (handle)
flag := .T.
End If
.... Codigo especifico de la funcion
Return
Reitero el comando DRAW LINE IN WINDOW y compania poseen el mismo problema que la función que te postee al principio.
FELICITACIONES por tu trabajo y muchas gracias por la dedicación que nos brindas a todos.
Un saludo cordial,
Claudio.
pero por ahora voy a seguir usando la forma manual (ON INIT) prefiero no modificar los archivos fuentes (h_init.prg y h_windows.prg) y volverlos a compilar. Me parece que salvo casos impresindibles no deberíamos modificar los fuentes para mantener la compatibilidad entre nuestras aplicaciones. Admiro y respeto mucho tu trabajo, creo que la modificación de las librerías estandar debe ser monopolio exclusivo tuyo. Esto no implica que nosotros los usuarios no podamos intentar aportar alguna idea o función/librería externa, pero creo que siempre respetando el estandar.
Es solo una idea, tal vez podrías agregar en el futuro alguna función tipo StarApp y EndApp, de manera que cada llamada por ej.
StarApp proc1 ... StarApp procN genere una lista de procedures que se ejecutan una a continuación de la otra cuando comienza la aplicación. Esto permitiría crear funciones de asignación/liberación de recursos sin la intervención del usuario de la función.
Ej.
Procedure cargar_imagen
Static flag := .F.
If flag = F
StarApp acciones_necesarias ()
EndApp liberar_recursos (handle)
flag := .T.
End If
.... Codigo especifico de la funcion
Return
Reitero el comando DRAW LINE IN WINDOW y compania poseen el mismo problema que la función que te postee al principio.
FELICITACIONES por tu trabajo y muchas gracias por la dedicación que nos brindas a todos.
Un saludo cordial,
Claudio.
- srvet_claudio
- Posts: 2224
- Joined: Thu Feb 25, 2010 8:43 pm
- Location: Uruguay
- Contact:
Re: Roberto Heeeelp!!!
Olá Vanguarda, com ON PAINT sempre causa interferência com os controles que estão na janela, prova modificar o exemplo que postee no início.
Como dizem no Rio Grande do Sul,
um abraço de duas voltas e meia, che!
Claudio.
Como dizem no Rio Grande do Sul,
um abraço de duas voltas e meia, che!
Claudio.
- Roberto Lopez
- HMG Founder
- Posts: 4023
- Joined: Wed Jul 30, 2008 6:43 pm
Re: Roberto Heeeelp!!!
At first, I will research DRAW LINE issue.srvet_claudio wrote:Gracias Roberto por tu ayuda,
pero por ahora voy a seguir usando la forma manual (ON INIT) prefiero no modificar los archivos fuentes (h_init.prg y h_windows.prg) y volverlos a compilar. Me parece que salvo casos impresindibles no deberíamos modificar los fuentes para mantener la compatibilidad entre nuestras aplicaciones. Admiro y respeto mucho tu trabajo, creo que la modificación de las librerías estandar debe ser monopolio exclusivo tuyo. Esto no implica que nosotros los usuarios no podamos intentar aportar alguna idea o función/librería externa, pero creo que siempre respetando el estandar.
Es solo una idea, tal vez podrías agregar en el futuro alguna función tipo StarApp y EndApp, de manera que cada llamada por ej.
StarApp proc1 ... StarApp procN genere una lista de procedures que se ejecutan una a continuación de la otra cuando comienza la aplicación. Esto permitiría crear funciones de asignación/liberación de recursos sin la intervención del usuario de la función.
Ej.
Procedure cargar_imagen
Static flag := .F.
If flag = F
StarApp acciones_necesarias ()
EndApp liberar_recursos (handle)
flag := .T.
End If
.... Codigo especifico de la funcion
Return
Reitero el comando DRAW LINE IN WINDOW y compania poseen el mismo problema que la función que te postee al principio.
FELICITACIONES por tu trabajo y muchas gracias por la dedicación que nos brindas a todos.
Un saludo cordial,
Claudio.
Usually, an HMG application 'exist' as its main window does, so, the ON INIT and ON RELEASE event of the main window could be considered as the start-up and end events of the application.
The only exception occurs when you add code prior to the main window definition, but usually this is not a problem.
//
Analizaré la cuestión de ON INIT.
Respecto del otro tema, podrías considerar con seguridad que los eventos ON INIT y ON RELEASE de tu ventana principal se corresponden con los de tu aplicación, salvo por el código previo a la definición de la ventana principal, lo cual usualmente no presenta un problema.
Regards/Saludos,
Roberto
(Veritas Filia Temporis)
Roberto
(Veritas Filia Temporis)
- srvet_claudio
- Posts: 2224
- Joined: Thu Feb 25, 2010 8:43 pm
- Location: Uruguay
- Contact:
Re: Roberto Heeeelp!!!
Gracias Roberto por aclararme el panorama.
La versión final de esta función la postee en:
viewtopic.php?f=15&t=1256&start=0&bookm ... 6b3b4a95fd
Saludos a todos.
Claudio
La versión final de esta función la postee en:
viewtopic.php?f=15&t=1256&start=0&bookm ... 6b3b4a95fd
Saludos a todos.
Claudio
- Roberto Lopez
- HMG Founder
- Posts: 4023
- Joined: Wed Jul 30, 2008 6:43 pm
Re: Roberto Heeeelp!!!
Muchas Gracias!srvet_claudio wrote:Gracias Roberto por aclararme el panorama.
La versión final de esta función la postee en:
viewtopic.php?f=15&t=1256&start=0&bookm ... h=b093fab5
Saludos a todos.
Claudio
Regards/Saludos,
Roberto
(Veritas Filia Temporis)
Roberto
(Veritas Filia Temporis)