mas pruebas
- Code: Select all Expand view
#include "fivewin.ch"
FUNCTION main()
LOCAL oDlg, oBmp
DEFINE DIALOG oDlg FROM 1,1 TO 20,20
@ 0,0 BITMAP oBmp OF oDlg NOBORDER SIZE 25, 37
ACTIVATE DIALOG oDlg NOWAIT
createBmp( oDlg, oBmp )
MSGINFO('HOLA')
return nil
FUNCTION createBmp( oDlg, oBmp )
local hDC1 := GetDC( GetDesktopWindow() )
local hDC := CreateCompatibleDC( hDC1 )
LOCAL hDib
local hBmp := CreateCompatibleBitmap( hDC1, 50, 75 )
local hOldBmp := SelectObject( hDC, hBmp )
local hEMF := GetEnhMetaFile( '1.emf' )
PlayEnhMetaFile( oDlg:getDC(), hEMF, oDlg:hWnd )
rectangle( hDc, 0,0,60,80 )
PlayEnhMetaFile( hDc, hEMF, oBmp:hWnd )
DrawBitmap( oDlg:GetDC(), hBmp, 0, 0, 50, 75 )
hDib := DibFromBitmap( hBmp )
DibWrite( "file.bmp" , hDib )
GloBalFree( hDib )
CloseEnhMetafile( hEMF )
SelectObject( hDC, hOldBmp )
DeleteDC( hDC )
RETURN( NIL )
Bueno como veran en el codigo hay mucho que comentar:
1.- Para poder dibujar el EMF tuve que crear un objeto bmp para conseguir sus atributos de tamaño, y asi usar
PlayEnhMetaFile( hDc, hEMF, oBmp:hWnd )
2.- Para que no salga negro el BMP tuve que pintar un rectangulo inicialmente, para tener fondo blanco
rectangle( hDc, 0,0,60,80 )
3.- DrawBitmap( oDlg:GetDC(), hBmp, 0, 0, 50, 75 ) esto no muestra el BMP
4.- Pero si se puede dibujar sobre el dialogo como se muetra en el ejemplo (es imperativo que el dialogo sea NOWAIT)
5.- Si corren el ejemplo, claro tienes que tener un archivo 1.emf, veran que se crea el BMP con el EMF dibujado en el
En conclusion no tengo absolutamente nada claro, ya que la solucion presentada es muy complicada y fuera de lo normal segun yo,
habra que seguir trabajando
Comentarios Antonio, Daniel??
saludos
Marcelo