Carlos,
En los equipos que te da el error de pintado, ¿qué driver usas?. ¿cuál es el chipset de la tarjeta gráfica?.
Salu2
FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Carlos,
En los equipos que te da el error de pintado, ¿qué driver usas?. ¿cuál es el chipset de la tarjeta gráfica?.
Salu2
Moises,
Gracias por tu interés. Deduzco que tu no debes tener ese problema, dado que preguntas por mi configuración. Que configuración has usado?
Tal como respondà ayer, creo que un chipset nVidia de una tarjeta nueva de 256 Mb de RAM dedicada no da lugar a muchas dudas, motherboard ASUS, Athlon, 1 Gb de RAM, con esa tarjeta de video ejecuta juegos de manera impecable, fue construido para eso. Y no creo que un control de FiveWin sea más exigente en cuestiones gráficas que un juego.
Y ayer a la tarde hablando con un colega de la lista me confirmó los mismos problemas con el demo.exe descargado del enlace de este hilo, pero no me dio (no le pregunté) su configuración. Espero que si lee este mensaje pueda dar ese detalle.
Y lo he probado con 3 equipos, ademas del nvidia, lo probé en mi portatil que es un acer 1410 WLMI con 768 Mb RAM y chipset gráfico Intel® 855GME integrated 3D AGP graphics / Intel® Extreme Graphics 2 technology 64 MB of video memory Dual independent display support
Aca en la oficina es un VIA/S3G Unichrome PRO IGP con 64 Mb de RAM, en un Pentium IV de 3.0 Ghz y 512 Mb de RAM, la especificaciones las puedes ver en la imagen posteada, ya que use la ventana de propiedades para hacer fallar el pintado.
SerÃa interesante saber si alguien más tiene ese problema, sobre todo si el equipo es de recursos limitados, ya que un banco de pruebas debe presentar las condiciones desfavorables.
Un saludo,
Carlos.
Carlos,
Muchas gracias por responder. A mi todavÃa no me ha dado tu error, si he notado una vez que no pintaba bien una esquina pero al seleccionar otro Folder de la barra se repintó bien.
Voy a hacer pruebas en un equipo antiguo con Windows ME y con un equipo Pentium 2.8 2 gb RAM que tiene la nvidia a ver qué sucede.
A ver si damos con el bug, porque la nueva clase de Antonio es excelente y tengo muchas ganas de integrarla en mis aplicaciones.
Un saludo
Moises,
el error se produce cuando tu aplicacion no es la activa, es decir el foco esta en una ventana que no es tu exe. Y como tu dices, al retomar el foco comienza a pintar sin problemas. Es el mismo comportamiento.
Seguir buscando en el hardware problemas que solo tenemos con controles de FW me parece que no tiene mucho sentido. Notaras que si las clases son nativas de windows el problema no aparece, solo es en las que pintamos nosotros. Es decir que al pintar hacemos algo diferente. El problema lo tengo con XP, con Milenium... es que ni siquiera tiene soporte de temas...
Un saludo
Carlos.
Carlos,
efectivamente solo es con fivewin,
con otros lenguajes de programacion o IDE (s) no he tenido ese
problema,
Es muy raro no en todas las pcs pasa
pero en definitivo es un problema de la libreria de fivewin
ojala se encuentre arreglo ya que los programas se ven feos,,
saludos.

Antonio Linares wrote:Carlos,
Otra posible pista: Si BeginPaint() falla (según la documentación del API de Windows) entonces el hDC devuelto no es válido, por lo que al intentar usarlo más adelante no funcionarÃa. Una posible prueba serÃa este cambio:
METHOD _BeginPaint() CLASS TWindow local cPS if ::nPaintCount == nil ::nPaintCount = 1 else ::nPaintCount++ endif ::hDC = BeginPaint( ::hWnd, @cPS ) ::cPS = cPS if ::hDC == 0 MsgBeep() // tenemos un hDC no válido ! endif return nil
METHOD _BeginPaint() CLASS TOutLook2
local cPS
if ::nPaintCount == nil
::nPaintCount = 1
else
::nPaintCount++
endif
::hDC = BeginPaint( ::hWnd, @cPS )
::cPS = cPS
Debug ::hDC
return nil
METHOD Colors( hDC ) CLASS TOutLook2
Debug hDC
Return NILTOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1359024382
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -385806109
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 939593962
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1543573760
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1359024382
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1543573760
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -1124003575
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1476464714
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1359024382
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 922816754
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 889262400
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 788599041
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -385806109
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -167702589
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -1124003575
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1543573760
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1040256830
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1359024382
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 788599041
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 939593962
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1359024382
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 788599041
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -2097082404
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 788599041
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 922816754
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1359024382
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 788599041
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 922816754
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 922816754
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 922816754
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -167702589
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1929449739
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -385806109
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1543573760
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -2097082404
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1359024382
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 184619263
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1744900316
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1744900316
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -385806109
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1040256830
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 184619263
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 922816754
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -1912534408
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1812008841
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 889262400
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -1912534408
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 2063667294
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1040256830
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 2063667294
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -167702589
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 184619263
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1929449739
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 889262400
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 788599041
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1744900316
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -1124003575
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 1812008841
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): -385806109
TOUTLOOK2:BEGINPAINT(146) - ::hDC (N): 922816754Carlos,
Gracias por tu ayuda. A ver si damos con el bug
Lo curioso es que solo ocurre con los controles propios de FWH. En el pushbutton y el statusbar del ejemplo, el pintado es correcto
Antonio,
efectivamente me sucede con los controles de FiveWin que pintamos, pero no con los que usan las clases predefinidas, por ejemplo en el control los botones los dibujo yo para hacer el degradado y tal, pero si pongo un boton normal de windows como en la clase outlook original, se pinta perfectamente y no logro fallar. El fallo tambien es evidente en los msgitems de la statusbar.
Cualquier cosa que veas que se puede probar me avisas.
Un saludo,
Carlos.
TOUTLOOK2:HANDLEEVENT(178) - "WM_PAINT "
TOUTLOOK2:HANDLEEVENT(177) - "WM_NCPAINT "
TOUTLOOK2:HANDLEEVENT(173) - "WM_ERASEBKGND "
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"TOUTLOOK2:HANDLEEVENT(178) - "WM_PAINT "
TOUTLOOK2:HANDLEEVENT(177) - "WM_NCPAINT "
TOUTLOOK2:HANDLEEVENT(173) - "WM_ERASEBKGND "
TOUTLOOK2:HANDLEEVENT(177) - "WM_NCPAINT "
TOUTLOOK2:HANDLEEVENT(173) - "WM_ERASEBKGND "
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"
TOUTLOOK2:HANDLEEVENT(178) - "WM_PAINT "
TOUTLOOK2:HANDLEEVENT(177) - "WM_NCPAINT "
TOUTLOOK2:HANDLEEVENT(173) - "WM_ERASEBKGND "
TOUTLOOK2:HANDLEEVENT(173) - "WM_ERASEBKGND "
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"
TOUTLOOK2:HANDLEEVENT(188) - "WM_CTLCOLORSTATIC"Carlos,
gracias por tu ayuda. La verdad es que no veo nada extraño salvo que hay dos erasebkgnd seguidos:
TOUTLOOK2:HANDLEEVENT(173) - "WM_ERASEBKGND "
TOUTLOOK2:HANDLEEVENT(173) - "WM_ERASEBKGND "
colegas alguien me puede explicar esto q esta hecho en C y forma parte de FWH,, el archivo se llama dc.c esta en winapi
//----------------------------------------------------------------------------//
CLIPPER FWDISPBEGIN( PARAMS ) // ( hWnd, hDC ) --> aInfo
CLIPPER FWDISPBEGI( PARAMS ) // ( hWnd, hDC ) -->aInfo
{
HWND hWnd = ( HWND ) _parnl( 1 );
HDC hDC = ( HDC ) _parnl( 2 );
HDC hDC2;
HBITMAP hBmp, hBmpOld;
RECT rct;
GetClientRect( hWnd, &rct );
hDC2 = CreateCompatibleDC( hDC );
hBmp = CreateCompatibleBitmap( hDC, rct.right - rct.left,
rct.bottom - rct.top );
hBmpOld = ( HBITMAP ) SelectObject( hDC2, hBmp );
// we comment it out to improve painting speed
// BitBlt( hDC2, 0, 0, rct.right, rct.bottom, hDC, 0, 0, SRCCOPY );
#ifdef XPP
#define _stornl( x, y, z ) STORNL( x, params, y, z )
#endif
_reta( 5 );
_stornl( ( LONG ) hWnd , -1, 1 );
_stornl( ( LONG ) hDC , -1, 2 );
_stornl( ( LONG ) hDC2 , -1, 3 );
_stornl( ( LONG ) hBmp , -1, 4 );
_stornl( ( LONG ) hBmpOld, -1, 5 );
}
//----------------------------------------------------------------------------//
he notado q si de la clase twindow suprimo la coneccion a esta rutina en C el problema del mal pintado se corrige,, pero no se pq.. quizas alguien u antonio q es el master me lo pueda explicar.. o quizas hay algo mal en esto codigo,, quizas entre en conflicto con algo
bueno ahi les dejo la inquietud
A&C : Como has hecho para suprimir esta rutina ??. Yo lo he hecho y me produce un error al ejecutar la aplicación.
Antonio Linares wrote:Carlos,
gracias por tu ayuda. La verdad es que no veo nada extraño salvo que hay dos erasebkgnd seguidos