FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Cambiar puntero mouse
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Cambiar puntero mouse
Posted: Fri Jan 12, 2018 02:18 PM
Bien, en una ventana veo que se puede cambiar el puntero (CURSOR) del mouse, definiendo un CURSOR previamente...
   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!!!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Cambiar puntero mouse
Posted: Sat Jan 13, 2018 08:09 AM

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
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Cambiar puntero mouse
Posted: Sat Jan 13, 2018 10:19 AM
Antonio,

Pues algo está fallando...
CURSOR oCursor no lo traga al compilar...
Y...
oImage:oCursor := oCursor
No cambia de cursor
#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!!!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Cambiar puntero mouse
Posted: Sun Jan 14, 2018 06:28 AM

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
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Cambiar puntero mouse
Posted: Sun Jan 14, 2018 09:24 PM
Pues yo no tengo nada raro... y no me funciona
#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!!!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 05:59 AM
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:
   
   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
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 08:51 AM
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
#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!!!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 11:35 AM

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
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 12:47 PM

Borland BCC7

Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 01:09 PM

#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 CENTER

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

Continue the discussion