Cambiar puntero mouse

Post Reply
User avatar
Xevi
Posts: 174
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Cambiar puntero mouse

Post by Xevi »

Bien, en una ventana veo que se puede cambiar el puntero (CURSOR) del mouse, definiendo un CURSOR previamente...

Code: Select all | Expand

   DEFINE CURSOR oCursor WAIT//HAND   DEFINE WINDOW oWnd FROM 1,0 TO 300,500 PIXEL;         CURSOR oCursor 


Pero lo que pretendo es cambiar ese puntero (CURSOR) de un objeto... IMAGE, BUTTON, PANEL, etc...

¿Como lo hago???

He mirado la clase TButton y no tienen ninguna propiedad que vea que se le corresponde al CURSOR
Tampoco la clase TControl, que es de la que se hereda.

Gracias.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Antonio Linares
Site Admin
Posts: 42750
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 110 times
Been thanked: 108 times
Contact:

Re: Cambiar puntero mouse

Post by Antonio Linares »

Xevi,

La Clase TControl deriva de la Clase TWindow, por lo que tiene también la propiedad oCursor
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Xevi
Posts: 174
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Cambiar puntero mouse

Post by Xevi »

Antonio,

Pues algo está fallando...
CURSOR oCursor no lo traga al compilar...
Y...
oImage:oCursor := oCursor
No cambia de cursor

Code: Select all | Expand

#include "FiveWin.ch"//----------------------------------------------------------------------------//function Main()   local oWnd, oChild1, oImage, oCursor   DEFINE CURSOR oCursor HAND   DEFINE WINDOW oWnd VSCROLL HSCROLL   @ 0, 0 XIMAGE oImage SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER /*CURSOR oCursor*/ OF oWnd   oImage:oCursor := oCursor   DEFINE WINDOW oChild1 CURSOR oCursor OF oWnd   oChild1:Show()   ACTIVATE WINDOW oWnd return nil 


Aquí SOLO cambia el cursor cuando pasas el mouse por encima de la Ventana2, y no por la imagen
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Antonio Linares
Site Admin
Posts: 42750
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 110 times
Been thanked: 108 times
Contact:

Re: Cambiar puntero mouse

Post by Antonio Linares »

Xevi,

Tu ejemplo funciona correctamente aquí

La claúsula ... CURSOR oCursor ... no está implementada para el comando XIMAGE ... por eso el usar:

oImage:oCursor := oCursor
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Xevi
Posts: 174
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Cambiar puntero mouse

Post by Xevi »

Pues yo no tengo nada raro... y no me funciona

Code: Select all | Expand

#include "FiveWin.ch"//----------------------------------------------------------------------------//function Main()   local oWnd, oChild1, oImage, oImage2, oCursor   DEFINE CURSOR oCursor HAND   DEFINE WINDOW oWnd FROM 1,0 TO 500,800 PIXEL   @ 0, 0 IMAGE oImage SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER CURSOR oCursor OF oWnd   @ 0, 50 XIMAGE oImage2 SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER OF oWnd   oImage:oCursor := oCursor   DEFINE WINDOW oChild1 OF oWnd   oChild1:Center( oWnd )   oChild1:Show()   ACTIVATE WINDOW oWnd return nil 


El IMAGE si que cambia el CURSOR, el XIMAGE no!!!

Aquí, el centrado se ve que no funciona el cálculo del alto, si lo centra en el ancho, pero no en el alto
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Antonio Linares
Site Admin
Posts: 42750
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 110 times
Been thanked: 108 times
Contact:

Re: Cambiar puntero mouse

Post by Antonio Linares »

Xevi,

Tienes un pequeño error en tu código:

@ 0, 50 XIMAGE oImage2 SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER OF oWnd
oImage2:oCursor := oCursor

En la función WndCenter() en FWH/source/winapi/wndcente.c hay que hacer esta modificación:

Code: Select all | Expand

   if( hParent && IsWindow( hParent ) )      GetClientRect( hParent, &rctDesktop );   else      GetWindowRect( GetDesktopWindow(), &rctDesktop );


Se incluye este cambio en FWH 18.01, gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Xevi
Posts: 174
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Cambiar puntero mouse

Post by Xevi »

Antonio, es verdad, tengo un pequeño error, pero salvando el error

oImage2:oCursor := oCursor

El CURSOR no cambia en XIMAGE

por cierto, he probado el tooltip y tampoco funciona en XIMAGE

Code: Select all | Expand

#include "FiveWin.ch"//----------------------------------------------------------------------------//function Main()   local oWnd, oChild1, oImage, oImage2, oCursor   DEFINE CURSOR oCursor HAND   DEFINE WINDOW oWnd FROM 1,0 TO 500,800 PIXEL   @ 0, 0 IMAGE oImage SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER CURSOR oCursor OF oWnd   oImage:cTooltip := "Mensaje Tooltip"   @ 0, 50 XIMAGE oImage2 SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER OF oWnd   oImage2:oCursor := oCursor   oImage2:cTooltip := "Mensaje Tooltip2"   DEFINE WINDOW oChild1 OF oWnd   oChild1:Center( oWnd )   oChild1:Show()   ACTIVATE WINDOW oWnd return nil 
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Antonio Linares
Site Admin
Posts: 42750
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 110 times
Been thanked: 108 times
Contact:

Re: Cambiar puntero mouse

Post by Antonio Linares »

Xevi,

Aquí funciona correctamente y posiblemente se deba a los cambios que hemos introducido para FWH 18.01 que esperamos publicar en breve

Que compilador de C usas ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Xevi
Posts: 174
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Cambiar puntero mouse

Post by Xevi »

Borland BCC7
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
karinha
Posts: 8007
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 7 times
Contact:

Re: Cambiar puntero mouse

Post by karinha »

Image

Code: Select all | Expand

#include "FiveWin.ch"#include "Image.ch"function Main()   local oWnd, oChild1, oImage, oImage2, oCursor, oBrush   DEFINE BRUSH oBrush COLOR nRGB(210,210,255) // ,nRGB(255,255,255)   DEFINE CURSOR oCursor HAND   DEFINE WINDOW oWnd FROM 1,0 TO 500,800 PIXEL ;          CURSOR oCursor BRUSH oBrush   @ 0, 0 IMAGE oImage SIZE 32, 32 FILENAME "C:\fwh1701\bitmaps\32x32\App.bmp" NOBORDER CURSOR oCursor OF oWnd   oImage:cTooltip := "Mensaje Tooltip"   // XIMAGE??   @ 0, 50 IMAGE oImage2 SIZE 32, 32 FILENAME "C:\fwh1701\bitmaps\32x32\App.bmp" NOBORDER OF oWnd   oImage2:oCursor := oCursor   oImage2:cTooltip := "Mensaje Tooltip2"   DEFINE WINDOW oChild1 OF oWnd   oChild1:Center( oWnd )   oChild1:Show()   ACTIVATE WINDOW oWnd CENTERreturn nil 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Post Reply