Page 1 of 1

Doble Buffer

Posted: Wed Feb 28, 2007 10:21 am
by Carles
Hola,

Estoy intentando poner el doble buffer en la clase TEnhMetaFile. En principio en el metodo ::Paint() pongo:

Code: Select all

METHOD Paint()...
  LOCAL aInfo := ::DispBegin()
  ...
  ::DispEnd( aInfo) 

RETU NIL 
A parte e insertado y probado el metodo EraseBkGnd( hDC ) INLINE 1 o 0, pero no me acaba de funcionar bien.

Tengo de poner algo mas ?

El test es simple

Code: Select all

#include 'fivewin.ch'
STATIC oWnd

FUNCTION Main()

    DEFINE WINDOW oWnd MDI
    ACTIVATE WINDOW oWnd ON INIT Test()

RETU NIL

STATIC FUNCTION Test()

    LOCAL oChild, oMeta, oBmp

    DEFINE WINDOW oChild MDICHILD OF oWnd

      oMeta := TEnhMetaFile():New( 0, 0, 300, 400, '', oChild, ;
                                   CLR_BLACK, CLR_WHITE )

      @0,0 BITMAP oBmp FILE 'cara1.bmp' SIZE 200, 200 OF oMeta NOBORDER

      SET MESSAGE OF oChild TO 'Test Double Buffer'

    ACTIVATE WINDOW oChild

RETU NIL
Alguna idea ?

Gracias

Posted: Wed Feb 28, 2007 11:20 am
by Antonio Linares
Carles,

Tu código parece correcto, lo que ocurre es que el doble buffer no siempre va bien con todos los controles y todas las situaciones.

Un metafile es un conjunto de instrucciones de pintado que ejecuta Windows. Tal vez no sea compatible con el doble buffer

Posted: Wed Feb 28, 2007 11:23 am
by Carles
Antonio,

Pues debe ser eso, porque mirando como estan definidos los otros controles, no parecia complicado.


Gracias.