JoséQuintas escreveu:Dá uma olhada no fonte, se ele usa a API passando os parâmetros de tamanho.
Sim passa.
Esses são os métodos da classe HIcon, os dois métodos usam hwg_LoadImage( 0, Name, IMAGE_ICON, nWidth, nHeight, nFlags ), a diferença é que AddResource o nFlags é 0 (zero)
METHOD AddResource( name, nWidth, nHeight, nFlags, lOEM ) CLASS HIcon
LOCAL lPreDefined := .F. , oElemento, aIconSize
IF nWidth == Nil
nWidth := 0
ENDIF
IF nHeight == Nil
nHeight := 0
ENDIF
IF nFlags == Nil
nFlags := 0
ENDIF
IF lOEM == Nil
lOEM := .F.
ENDIF
IF ValType( Name ) == "N"
Name := LTrim( Str( Name ) )
lPreDefined := .T.
ENDIF
FOR EACH oElemento IN ::aIcons
IF oElemento:name == Name
oElemento:nCounter ++
RETURN oElemento
ENDIF
NEXT
// ::classname:= "HICON"
IF lOEM // LR_SHARED is required for OEM images
::handle := hwg_LoadImage( 0, Val( Name ), IMAGE_ICON, nWidth, nHeight, Hwg_bitor( nFlags, LR_SHARED ) )
ELSE
::handle := hwg_LoadImage( Nil, iif( lPreDefined, Val( Name ), Name ), IMAGE_ICON, nWidth, nHeight, nFlags )
ENDIF
::Name := Name
aIconSize := hwg_GetIconSize( ::handle )
::nWidth := aIconSize[ 1 ]
::nHeight := aIconSize[ 2 ]
aAdd( ::aIcons, Self )
RETURN Self
METHOD AddFile( Name, nWidth, nHeight, nFlags ) CLASS HIcon
LOCAL oElemento, aIconSize, cName := CutPath( Name ), cCurDir, nHandleFile, aTamIcon, nIconW, nIconH
LOCAL nWidthIcon, nHeightIcon, lPreDefined := .F.
IF nFlags = Nil
nFlags := LR_LOADFROMFILE + LR_SHARED + LR_LOADTRANSPARENT + LR_LOADMAP3DCOLORS
ENDIF
FOR EACH oElemento IN ::aIcons
IF oElemento:Name == cName
oElemento:nCounter ++
RETURN oElemento
ENDIF
NEXT
// ::classname:= "HICON"
Name := iif( ! File( Name ) .AND. File( cName ), cName, Name )
IF ::lSelFile .AND. ! File( Name )
cCurDir := DiskName() + [:\] + CurDir()
Name := hwg_SelectFile( "Image Files( *.jpg;*.gif;*.bmp;*.ico )", CutPath( Name ), FilePath( Name ), "Locate " + Name ) //"*.jpg;*.gif;*.bmp;*.ico"
DirChange( cCurDir )
ENDIF
::handle := hwg_LoadImage( 0, Name, IMAGE_ICON, nWidth, nHeight, nFlags )
::Name := cName
aIconSize := hwg_GetIconSize( ::handle )
::nWidth := aIconSize[ 1 ]
::nHeight := aIconSize[ 2 ]
aAdd( ::aIcons, Self )
RETURN Self
HB_FUNC( HWG_LOADIMAGE )
{
void *hString = NULL;
HB_RETHANDLE( LoadImage( HB_ISNIL( 1 ) ? GetModuleHandle( NULL ) : ( HINSTANCE ) hb_parnl( 1 ), // handle of the instance that contains the image
HB_ISNUM( 2 ) ? MAKEINTRESOURCE( hb_parni( 2 ) ) : HB_PARSTR( 2, &hString, NULL ), // name or identifier of image
( UINT ) hb_parni( 3 ), // type of image
hb_parni( 4 ), // desired width
hb_parni( 5 ), // desired height
( UINT ) hb_parni( 6 ) // load flags
) );
hb_strfree( hString );
}