In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Controles Transparentes

Foro público de Xailer en español
Responder
Avatar de Usuario
xhermita
Mensajes: 177
Registrado: Vie Feb 18, 2011 10:05 pm
Ubicación: Las Palmas de Gran Canaria
Contactar:

Controles Transparentes

Mensaje por xhermita »

Sigo con el control TLabel con Efectos (Bautizado TLabelFX por binguen),
pero me apremia el tiempo y necesito aplicarlo a mi programa aunque no
tenga todas las funcionalidades, incluso aunque tenga que crearlos por
código y no visualmente, no me importa.
El problema surge al incluirlos en el programa, se ven bien pero el
control no es transparente por lo que el efecto que que querí­a conseguir
no me vale.
Ayuda: ¿Como hago para que el control sea transparente?
Pedro Amaro
2PC Service

Xailer / Néfele / MySQL-MariaDB / SQLServer
Avatar de Usuario
xhermita
Mensajes: 177
Registrado: Vie Feb 18, 2011 10:05 pm
Ubicación: Las Palmas de Gran Canaria
Contactar:

Controles Transparentes

Mensaje por xhermita »

Vale; ya es transparente, pero demasiado transparente, no se ve el
contenido del control.
He estado hurgando en los controles que trae xailer "TLabel" y "TBevel"
que son transparentes, he visto que usan una funcion externa llamada
XWinControl_WMEraseBkgnd() (no tengo ni idea de donde sale, ni como
funciona) y he estado experimentando, pero no consigo que sea
transparente y ademas aparezca lo que yo pinto con canvas sobre el control.
El 19/04/2011 18:40, Pedro Amaro escribió:
> Sigo con el control TLabel con Efectos (Bautizado TLabelFX por binguen),
> pero me apremia el tiempo y necesito aplicarlo a mi programa aunque no
> tenga todas las funcionalidades, incluso aunque tenga que crearlos por
> código y no visualmente, no me importa.
>
> El problema surge al incluirlos en el programa, se ven bien pero el
> control no es transparente por lo que el efecto que que querí­a conseguir
> no me vale.
>
> Ayuda: ¿Como hago para que el control sea transparente?
--
Pedro Amaro
2PC Service

Xailer / Néfele / MySQL-MariaDB / SQLServer
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Controles Transparentes

Mensaje por jfgimenez »

Pedro,
si estás haciendo el pintado desde C, llama a esta función al empezar a
pintar:
XA_DrawParentBackground( hWnd, hdc, NULL );
Y si el pintado lo estás haciendo desde PRG, entonces tendrás que hacer el
"wrapper", así­:
XA_FUNC( XA_DRAWPARENTBACKGROUND )
{
XA_DrawParentBackground( (HWND) hb_parnl( 1 ), (HDC) hb_parnl( 2 ),
NULL );
hb_ret();
}
Y si no lo consigues, puedes enviarme la función de pintado para revisarla.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
xhermita
Mensajes: 177
Registrado: Vie Feb 18, 2011 10:05 pm
Ubicación: Las Palmas de Gran Canaria
Contactar:

Controles Transparentes

Mensaje por xhermita »

Vale, lo voy pillando.
Pero en la llamada a XA_DRAWPARENTBACKGROUND que pongo en mi metodo de
pintado, ¿que le pongo en los dos parámetros.?
El 20/04/2011 10:55, Jose F. Gimenez escribió:
> Pedro,
>
> si estás haciendo el pintado desde C, llama a esta función al empezar a
> pintar:
>
> XA_DrawParentBackground( hWnd, hdc, NULL );
>
> Y si el pintado lo estás haciendo desde PRG, entonces tendrás que hacer
> el "wrapper", así­:
>
> XA_FUNC( XA_DRAWPARENTBACKGROUND )
> {
> XA_DrawParentBackground( (HWND) hb_parnl( 1 ), (HDC) hb_parnl( 2 ), NULL );
> hb_ret();
> }
>
>
> Y si no lo consigues, puedes enviarme la función de pintado para revisarla.
>
Pedro Amaro
2PC Service

Xailer / Néfele / MySQL-MariaDB / SQLServer
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Controles Transparentes

Mensaje por jfgimenez »

Pedro,
> Pero en la llamada a XA_DRAWPARENTBACKGROUND que pongo en mi metodo de
> pintado, ¿que le pongo en los dos parámetros.?
hWnd es el handle del control, o sea, ::Handle, y hdc es el "handle del
dispositivo de contexto" para pintar, y es el que estes usando en el resto
de comandos de pintado. En el caso de que estés pintando desde PRG usando el
"canvas", entonces el hdc es oCanvas:hdc
Resumiendo, si estás pintando desde PRG:
- hWnd: lo obtienes con ::Handle
- hdc: lo obtienes con oCanvas:hdc
Y si estás pintando desde C:
- hWnd: lo obtienes con:
PHB ITEM Self = hb_stackSelfItem();
HWND hWnd = GetHandleOf( Self );
- hdc: lo obtienes en la llamada a BeginPaint():
LPPAINTSTRUCT ps;
HDC hdc = BeginPaint( hWnd, ps );
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
xhermita
Mensajes: 177
Registrado: Vie Feb 18, 2011 10:05 pm
Ubicación: Las Palmas de Gran Canaria
Contactar:

Controles Transparentes

Mensaje por xhermita »

¡Chapo Maestro!, ha quedado perfecto.
Buen fin de semana
El 21/04/2011 12:54, Jose F. Gimenez escribió:
> Pedro,
>
>> Pero en la llamada a XA_DRAWPARENTBACKGROUND que pongo en mi metodo de
>> pintado, ¿que le pongo en los dos parámetros.?
>
> hWnd es el handle del control, o sea, ::Handle, y hdc es el "handle del
> dispositivo de contexto" para pintar, y es el que estes usando en el
> resto de comandos de pintado. En el caso de que estés pintando desde PRG
> usando el "canvas", entonces el hdc es oCanvas:hdc
>
> Resumiendo, si estás pintando desde PRG:
>
> - hWnd: lo obtienes con ::Handle
> - hdc: lo obtienes con oCanvas:hdc
>
> Y si estás pintando desde C:
>
> - hWnd: lo obtienes con:
> PHB ITEM Self = hb_stackSelfItem();
> HWND hWnd = GetHandleOf( Self );
>
> - hdc: lo obtienes en la llamada a BeginPaint():
> LPPAINTSTRUCT ps;
> HDC hdc = BeginPaint( hWnd, ps );
>
>
Pedro Amaro
2PC Service

Xailer / Néfele / MySQL-MariaDB / SQLServer
Avatar de Usuario
xhermita
Mensajes: 177
Registrado: Vie Feb 18, 2011 10:05 pm
Ubicación: Las Palmas de Gran Canaria
Contactar:

Controles Transparentes

Mensaje por xhermita »

Gracias a la ayuda del Maestro Jose Gimenez he conseguido que el control
TLabelFX sea transparente, y pueda aplicarlo a mi programa.
Les adjunto dos imágenes iguales del formulario principal, una con
TLabel y otra con TlabelFX.
Un saludo
Pedro Amaro
--
Pedro Amaro
2PC Service

Xailer / Néfele / MySQL-MariaDB / SQLServer
Responder