Como cargar cursor desde archivo ( RESUELTO )

Como cargar cursor desde archivo ( RESUELTO )

Postby cuatecatl82 » Mon Mar 14, 2022 3:02 am

Saludos a toda la comunidad:

He estado fuera de actividades por un tiempo pero no dejo de hacer practicas con pequeños proyectos, y por supuesto revisando las novedades en el foro.

Esta vez les solicito su ayuda ya que estoy intentando cambiar recursos en un dialogo, en especial el cursor del dialogo pero no doy como hacerlo ya que tengo lo siguiente:

Code: Select all  Expand view  RUN

Function Prueba()

local oDlg, oCur, oBtn, cFile, nHCur

define cursor oCur resource "00"
define dialog oDlg title "Probando Cursor"
@ 10, 10 BTNBMP oBtn PROMPT "&Cursor"  RESOURCE "BTN_CUR"   SIZE 32, 32 Pixel OF oDlg 2007

oDlg:oCursor:= oCur
oBtn:bAction:= { ||  cFile:= cGetFile( "Cursor (*.cur) | *.cur", "Seleccionar Recurso", 0, HB_CurDrive() + ":\" + CurDir(), .F., .T. ), nHCur:= loadcursor(, cFile ), oCur:hCursor:= nHCur, oDlg:oCursor:= oCur }

activate dialog oDlg center

return nil



Al arrancar el ejemplo el dialogo toma el cursor desde el archivo recurso dentro del .exe, pero al buscar un cursor como archivo externo, y cargarlo el Handle siempre regresa el valor 0, por lo que intuyo que loadicon() no lee desde archivos externos.

Hay alguna función o forma de cambiar los cursores desde archivos .cur externos, no vale que esten dentro de un archivo res, ya que el usuario elige a voluntad. trate de hacer una funcion loadcursorfromfile( cfile ) sin exito.

saludos y gracias por las ideas que puedan aportar la solucion. :lol: :D
Last edited by cuatecatl82 on Tue Mar 15, 2022 5:28 am, edited 1 time in total.
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Como cargar cursor desde archivo

Postby Antonio Linares » Mon Mar 14, 2022 10:06 am

Estimado Victor,

la función a usar sería ReadCursor() pero parece que aún no está implementada :-)

Basándonos en el código en cursors.c habria que leer el fichero .cur, localizar los grupos de bytes como hacemos en cursors.c y crearlo del mismo modo que se hace en cursors.c
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Como cargar cursor desde archivo

Postby Antonio Linares » Mon Mar 14, 2022 10:59 am

https://docs.microsoft.com/en-us/window ... rfromfilea

Enviado desde mi SM-M325FV mediante Tapatalk
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Como cargar cursor desde archivo

Postby cuatecatl82 » Mon Mar 14, 2022 1:41 pm

Maestro Antonio Linares:

En efecto, ya había leído sobre el tema pero no di con el resultado, el Handle siempre retorno 0, intente también con gdi y tampoco, pensé que la función loadcursor() soportaba leer cursores desde archivo.
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Como cargar cursor desde archivo

Postby cuatecatl82 » Tue Mar 15, 2022 5:27 am

Lo he logrado de esta forma, investigando y haciendo pruebas:

Code: Select all  Expand view  RUN
Local hCursor:=  LoadCursorFromFile( "Z:\FWH\cursors\Clock,cur" )
             
MSGStop(hCursor)  // Handle
SETCURSOR( hCursor )

DLL32 FUNCTION LoadCursorFromFile( lpFileName AS LPSTR ) AS LONG PASCAL FROM "LoadCursorFromFileA" LIB "user32.dll"


Asi he podido cambiar el icono, ya sea en .cur o en formato animado .ani, funcional !!!

Ojala sirva a alguien y que mejor, que sea incorporado a versiones futuras de Fivewin para que sea más fácil interactuar con cursores..

Saludos y abrazos a distancia a toda la comujnidad..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Como cargar cursor desde archivo

Postby nageswaragunupudi » Tue Mar 15, 2022 12:46 pm

cuatecatl82 wrote:Lo he logrado de esta forma, investigando y haciendo pruebas:

Code: Select all  Expand view  RUN
Local hCursor:=  LoadCursorFromFile( "Z:\FWH\cursors\Clock,cur" )
             
MSGStop(hCursor)  // Handle
SETCURSOR( hCursor )

DLL32 FUNCTION LoadCursorFromFile( lpFileName AS LPSTR ) AS LONG PASCAL FROM "LoadCursorFromFileA" LIB "user32.dll"


Asi he podido cambiar el icono, ya sea en .cur o en formato animado .ani, funcional !!!

Ojala sirva a alguien y que mejor, que sea incorporado a versiones futuras de Fivewin para que sea más fácil interactuar con cursores..

Saludos y abrazos a distancia a toda la comujnidad..


Thanks
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Como cargar cursor desde archivo ( RESUELTO )

Postby cuatecatl82 » Sun Mar 20, 2022 4:44 am

Maestro Antonio:
nageswaragunupudi:
Daniel Garcia-Gil:

Propongo agregar a la clase Cursor.prg unas lineas más para poder cargar cursores desde archivo recurso como siempre o desde archivos .cur o .ani externos de forma nativa sin hacer modificaciones en los fuentes de los programas ya hechos, solo se cambiaría el llamado al cursor y la clase se encargaría de saber si es en recurso o en archivo externo.

DEFINE CURSOR oCur RESOURCE "c:\cursor.cur" // "FLECHA"

Code: Select all  Expand view  RUN

IF FILE( cResName )
      ::hCursor = LoadCursorFromFile( cResName )
    ELSE
      ::hCursor = LoadCursor( GetResources(), cResName )
      ::lPredef = .F.
 ENDIF

DLL32 FUNCTION LoadCursorFromFile( lpFileName AS LPSTR ) AS LONG PASCAL FROM "LoadCursorFromFileA" LIB "user32.dll"  
 


Saludos. :D :D :mrgreen:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 113 guests