Page 1 of 1

Utilizar un Bmp como cursor

Posted: Mon Nov 20, 2006 10:05 pm
by Rafael Clemente
Tengo un pequeño Bmp que quisiera utilizar momentáneamente como cursor en lugar de la flecha de siempre. Supongo que se utiliza SetCursor() pero no he conseguido ir más allá. Alguien me podría poner un ejemplo de cómo hacerlo? Gracias

Rafael

Posted: Wed Nov 22, 2006 8:03 am
by Antonio Linares
Rafael,

Usando el Borland Resources Workshop (por ejemplo), crea un cursor y "pégale" encima la imagen del bitmap.

Luego revisa samples\TestCurs.prg

Posted: Wed Nov 22, 2006 8:11 am
by Rafael Clemente
Antonio:
Gracias, pero mi problema es algo diferente: Estoy cortando un trozo de un bitmap en pantalla y me gustaría pegarlo sobre otra imagen también en pantalla. Ahora lo hago ya mediante el cursor normal (flecha) apuntando a donde quiero pegarlo; me gustaría saber si sería posible convertir momentáneamente la flecha en el trozo recortado para arrastrarlo a su posición final.

Es sólo un capricho de estética pero supongo que podría quedar bonito...

Rafael

Posted: Wed Nov 22, 2006 11:12 am
by Antonio Linares
Rafael,

Revisa los fuentes de source\classes\xbrowse.prg, cuando se arrastra una cabecera de una columna con el ratón.

Posted: Wed Nov 22, 2006 12:03 pm
by Paco Garcia
Hola Rafael

Creo que lo que quieres hacer has de enfocarlo por medio de un Imagelist.

Existen unas macros que hacen el proceso:

BOOL ImageList_BeginDrag( HIMAGELIST himlTrack,
int iTrack,
int dxHotspot,
int dyHotspot
);

BOOL ImageList_DragMove( int x,
int y
);

VOID ImageList_EndDrag(VOID);

Yo creo que si buscas en Google seguro que encuentras lo que te digo.

Un saludo

Paco

Code: Select all

// Operaciones DRAG
HB_FUNC( IMAGELIST_BEGINDRAG )
{
     hb_retl( ImageList_BeginDrag( ( HIMAGELIST ) hb_parnl(1),
                  hb_parni(2),
                  hb_parni(3),
                  hb_parni(4)));
}

HB_FUNC( IMAGELIST_DRAGENTER )
{
     hb_retl( ImageList_DragEnter( (HWND) hb_parnl( 1 ), hb_parni(3), hb_parni(2)));
}

HB_FUNC( IMAGELIST_DRAGLEAVE )
{
     hb_retl( ImageList_DragLeave( (HWND) hb_parnl( 1 ) ) );
}

HB_FUNC( IMAGELIST_DRAGMOVE )
{
     hb_retl( ImageList_DragMove(  hb_parni(2), hb_parni(1)));
}

Posted: Wed Nov 22, 2006 9:29 pm
by Rafael Clemente
Paco:
No tenía ni idea de que existiesen estas funciones. Las probaré y ya te diré algo. Entretanto, muchas gracias!
Rafael