George, yo tengo lo siguiente:
...
...
redefine BUTTON zoom1 id 997 OF odlg1 ACTION AjustaZoom( oimagenf ,"S" ) MESSAGE "Ajusta la imagen a la ventana"
redefine BUTTON zoom2 id 998 OF odlg1 ACTION AjustaZoom( oimagenf ,"A" ) MESSAGE "+ ZOOM 10%"
redefine BUTTON zoom3 id 999 OF odlg1 action AjustaZoom( oimagenf ,"R" ) MESSAGE "- ZOOM 10%"
redefine BUTTON zoom4 id 996 OF odlg1 action AjustaZoom( oimagenf ,"V" ) MESSAGE "Vista previa"
....
....
Function AjustaZoom(oimagenf,cAccion)
local nZoom:=oimagenf:Zoom()
do case
case caccion == "V"
DEFINE BITMAP obmp FILE camino+'\fotos\empleados\'+cFileNoPath(pimagen)
DEFINE DIALOG ox TITLE 'Vista previa' SIZE obmp:nWidth(), obmp:nHeight PIXEL
ACTIVATE DIALOG ox CENTERED ON PAINT PalBmpDraw( hDC, 0, 0,obmp:hBitmap )
case cAccion == "S"
oimagenf:lStretch := !oimagenf:lStretch
oimagenf:ScrollAdjust()
oimagenf:Refresh( .t. )
case cAccion == "R"
if nZoom*10>1
oimagenf:lStretch := .f.
nZoom:=nZoom-(0.10)
oimagenf:Zoom(nZoom)
oimagenf:Refresh()
oimagenf:ScrollAdjust()
endif
case cAccion == "A"
oimagenf:lStretch := .f.
nZoom:=nZoom+0.10
oimagenf:Zoom(nZoom)
oimagenf:Refresh()
oimagenf:ScrollAdjust()
endcase
return NIL
Espero te sirva, un saludo.
Lorenzo