Vale Cristobal , yo creo que podemos intentarlo ...
Lo primero es mirar el código de Twindow:saveBmp() ....
METHOD SaveToBmp( cBmpFile ) CLASS TWindow
local hBmp := WndBitmap( ::hWnd )
local hDib := DibFromBitmap( hBmp )
DibWrite( cBmpFile, hDib )
GloBalFree( hDib )
DeleteObject( hBmp )
return ( File( cBmpFile ) )
Creo que con la primera linea nos llega ....de aquí tenemos el hBmp ... local hBmp := WndBitmap( ::hWnd )
Te pongo un prototipo de la función a usar , faltaría comprobar los gastos de memoria y esas cosas , pero en principio sería algo así en teoría....
Function GrabaWnd( hWnd, cImageEnd, nWidtn , nHeight )
local othumb
local hBmp := WndBitmap( hWnd ) // recogemos el hbmp
local hGDIbmp := GDIPLUSCREATEIMAGEFROMRES( hbmp ) // creamos un puntero a la imagen gdi+ desde el hbmp
local obmp:=GDIBmp():new() // inicializamos la clase en vacio
obmp:hBmp:= hGDIbmp // y le asigmamos el puntero anterior , ya esta la clase completa.
oThumb:= obmp:CreateThumbnail( nWidth, nHeight ) // ahora creamos un thumbnail del tamaño que queremos
oThumb:Save( cImageEnd ) // y grabamos la imagen donde queramos con el formato que queramos .
oThumb:dispose() //liberamos memoria
obmp:dispose()
Return nil