Hi Jimmy,
You are correct - there is a bug in the C-function GETICOINDEX().
Please take a look for the fixed function below:
Code: Select all
HB_FUNC( GETICOINDEX )
{
int nSize = ( HB_ISNUM( 2 ) ? hb_parni( 2 ) : 0 );
SHFILEINFO sfi = { 0 };
SHGetFileInfo( hb_parc( 1 ), 0, &sfi, sizeof( SHFILEINFO ), SHGFI_ICON | nSize );
hb_retnl( ( LONG ) sfi.iIcon );
HB_STORNL( ( LONG_PTR ) ( HICON ) sfi.hIcon, 3 );
}
Code: Select all
...
nIndex := GETICOINDEX( cFile, nSize, @hIcon )
ENDIF
ListView_SetItemImageIndex( GetControlHandle( cObj, cForm ), i, 1, nIndex )
IF Valtype( hIcon ) != "U"
IF DestroyIcon( hIcon )
hIcon := NIL
ENDIF
ENDIF
