Como cargar cursor desde archivo ( RESUELTO )

Post Reply
User avatar
cuatecatl82
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Como cargar cursor desde archivo ( RESUELTO )

Post by cuatecatl82 »

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


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
Antonio Linares
Site Admin
Posts: 42512
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 73 times
Contact:

Re: Como cargar cursor desde archivo

Post by Antonio Linares »

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: 42512
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 73 times
Contact:

Re: Como cargar cursor desde archivo

Post by Antonio Linares »

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

Enviado desde mi SM-M325FV mediante Tapatalk
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
cuatecatl82
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Como cargar cursor desde archivo

Post by cuatecatl82 »

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
Contact:

Re: Como cargar cursor desde archivo

Post by cuatecatl82 »

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

Code: Select all | Expand

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
nageswaragunupudi
Posts: 10721
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 8 times
Contact:

Re: Como cargar cursor desde archivo

Post by nageswaragunupudi »

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

Code: Select all | Expand

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
cuatecatl82
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Como cargar cursor desde archivo ( RESUELTO )

Post by cuatecatl82 »

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


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
Post Reply