Problemas de pintado
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Problemas de pintado
Antonio,
he estado haciendo unas pruebas con la clase outlook, usando el ejemplo de samples (testoutl.prg) y cuando esta ejecutándose, le superpongo alguna ventana y hago varios movimientos arrastrando la ventana, y empieza a pintarse mal la barra, y a veces tambien el interior de toutlook.
http://img295.imageshack.us/img295/1549 ... adofg3.jpg
Que puede ser ese problema? Estoy aprendiendo algo respecto de crear controles y este problema no se a que se le puede atribuir.
Shot at 2007-07-29
Primero me paso al cambiar el tipo de botones de toutlook y pensé que seria algo que hacia mal, pero volví al ejemplo sin modificar y tiene el mismo problema. Algun consejo?
Un saludo,
Carlos,
he estado haciendo unas pruebas con la clase outlook, usando el ejemplo de samples (testoutl.prg) y cuando esta ejecutándose, le superpongo alguna ventana y hago varios movimientos arrastrando la ventana, y empieza a pintarse mal la barra, y a veces tambien el interior de toutlook.
http://img295.imageshack.us/img295/1549 ... adofg3.jpg
Que puede ser ese problema? Estoy aprendiendo algo respecto de crear controles y este problema no se a que se le puede atribuir.
Shot at 2007-07-29
Primero me paso al cambiar el tipo de botones de toutlook y pensé que seria algo que hacia mal, pero volví al ejemplo sin modificar y tiene el mismo problema. Algun consejo?
Un saludo,
Carlos,
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Lo hice, de hecho es una de las primeras cosas que probé, lo acabo de repetir para ver si se corrige, pero no, sigo teniendo problemas.
Ojo que es un problema solo con Fivewin, ya que no he tenido el mismo inconveniente co notros programas, como para descartar cuastiones de drivers o gráfica.
Ya puestos en el tema, aprovecho para preguntar: ¿Que se supone que debe hacer una window/control al recibir el método ERASEBKGND, o mejor dicho, que parte del pintado pongo en uno u otro lugar? Es que estoy haciendo unos botones con el fondo degradado (el background, se supone), un texto y eventualmente un icono ( los datos del boton propiamente dicho ). Hay algún criterio para separar el pintado entre los dos mensajes?
Un saludo,
Carlos.
Ojo que es un problema solo con Fivewin, ya que no he tenido el mismo inconveniente co notros programas, como para descartar cuastiones de drivers o gráfica.
Ya puestos en el tema, aprovecho para preguntar: ¿Que se supone que debe hacer una window/control al recibir el método ERASEBKGND, o mejor dicho, que parte del pintado pongo en uno u otro lugar? Es que estoy haciendo unos botones con el fondo degradado (el background, se supone), un texto y eventualmente un icono ( los datos del boton propiamente dicho ). Hay algún criterio para separar el pintado entre los dos mensajes?
Un saludo,
Carlos.
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Carlos,
Que versión de FWH estás usando ?
>
¿Que se supone que debe hacer una window/control al recibir el método ERASEBKGND, o mejor dicho, que parte del pintado pongo en uno u otro lugar? Es que estoy haciendo unos botones con el fondo degradado (el background, se supone), un texto y eventualmente un icono ( los datos del boton propiamente dicho ). Hay algún criterio para separar el pintado entre los dos mensajes?
>
Lo ideal es no hacer nada en EraseBkGnd() (solo devolver 0) y hacer todo el proceso de pintado desde el método Paint(). Asi se evitan los "parpadeos"
Que versión de FWH estás usando ?
>
¿Que se supone que debe hacer una window/control al recibir el método ERASEBKGND, o mejor dicho, que parte del pintado pongo en uno u otro lugar? Es que estoy haciendo unos botones con el fondo degradado (el background, se supone), un texto y eventualmente un icono ( los datos del boton propiamente dicho ). Hay algún criterio para separar el pintado entre los dos mensajes?
>
Lo ideal es no hacer nada en EraseBkGnd() (solo devolver 0) y hacer todo el proceso de pintado desde el método Paint(). Asi se evitan los "parpadeos"
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Antonio,
Uso FWH 707.
Respecto del WM_ERASEBKGND, efectivamente es como tu dices. Le estaba buscando la vuelta por ahí, a ver si podía llegar a ser eso, pero no, he cambiado a INLINE 0, INLINE 1 y INLINE NIL, pero no hay caso, sigue fallando el pintado cuando la ventana no es la ventana activa.
¿Se te ocurre algo por donde buscarle? El error es evidente en el msgitem de msgbar, por hablar de un control sencillo. El sample de toutlook te puede servir como banco de pruebas.
Perdona que insista, pero tengo casi terminado unos controles como los de office pero tienen ese problema y preferiría resolver esa cuestión antes de usarlos.
La imagen es una versión del demo de FSDI de José Luis Sanchez usando un Outlook2. Tengo con ella el problema de pintado, por eso la insistencia.
Un saludo,
Carlos.
Uso FWH 707.
Respecto del WM_ERASEBKGND, efectivamente es como tu dices. Le estaba buscando la vuelta por ahí, a ver si podía llegar a ser eso, pero no, he cambiado a INLINE 0, INLINE 1 y INLINE NIL, pero no hay caso, sigue fallando el pintado cuando la ventana no es la ventana activa.
¿Se te ocurre algo por donde buscarle? El error es evidente en el msgitem de msgbar, por hablar de un control sencillo. El sample de toutlook te puede servir como banco de pruebas.
Perdona que insista, pero tengo casi terminado unos controles como los de office pero tienen ese problema y preferiría resolver esa cuestión antes de usarlos.
La imagen es una versión del demo de FSDI de José Luis Sanchez usando un Outlook2. Tengo con ella el problema de pintado, por eso la insistencia.
Un saludo,
Carlos.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Usa el ejemplo de toutlook de Fivewin del directorio samples, creo que eso demuestra el comportamiento del que hablamos en el msgbar.
Last edited by Carlos Mora on Sun Aug 26, 2007 8:26 am, edited 1 time in total.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Frafive,
¿Como te llamas?
Lo que ves es un OutLook2003. Se usa igual que outlook de Fivewin, con algunos pequeños detalles,
El código de los controles todavía no está completo, falta el splitter que determina cuantos botones del pie están activos y visibles, y el boton/menú de los que están inactivos/invisibles. Además, como ves, estoy revisando el código porque tengo problemas de pintado similares a los de MsgItem/MsgBar.
Si quieres algo similar te recomiendo los de canal five.
Un saludo,
Carlos.
¿Como te llamas?
Lo que ves es un OutLook2003. Se usa igual que outlook de Fivewin, con algunos pequeños detalles,
Code: Select all
#include "outlook.ch"
// DEFINE FONT oFont NAME "Arial" SIZE 0, -12
oFont = TFont():New( GetDefaultFontName(), 0, GetDefaultFontHeight(),, )
@ 0, 0 OUTLOOK2 oOut ;
SIZE oApp():oSplit:nLeft, oPDlg:nHeight()-oApp():oWndMain:oMsgBar:nHeight ;
PIXEL ;
FONT oFont ;
OF oPDlg
DEFINE GROUP OF OUTLOOK oOut PROMPT "Clientes" ;
RESOURCE "EBLOCK2"
DEFINE LABEL OF OUTLOOK oOut ;
PROMPT "Primera etiqueta"
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "ECUENTAS" ;
PROMPT "Outgoing messages" ;
ACTION msginfo("Your code ..." )
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "ESALIR" ;
PROMPT "Exit from the application" ;
ACTION oApp():oDlg:End()
DEFINE LABEL OF OUTLOOK oOut ;
PROMPT "Segunda etiqueta"
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "CONFIG7" ;
PROMPT "Third control" ;
ACTION ClrMain()
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "EUNIDAD" ;
PROMPT "Fourth control"
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "EUSUARIO" ;
PROMPT "This is the the fifth control"
DEFINE GROUP OF OUTLOOK oOut PROMPT "Empresa" ;
RESOURCE "BTN10A"
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "CONFIG3" ;
PROMPT "First button on second group bar"
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "CONFIG7" ;
PROMPT "Second button on second group bar"
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "B16USER" ;
PROMPT "Third button"
DEFINE GROUP OF OUTLOOK oOut PROMPT "Agentes" ;
RESOURCE "BTN13A"
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "EBLOCK3" ;
PROMPT "First button"
DEFINE BITMAP OF OUTLOOK oOut ;
RESOURCE "EBLOCK3" ;
PROMPT "Second button"
Si quieres algo similar te recomiendo los de canal five.
Un saludo,
Carlos.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Antonio,
Hoy ya volví al trabajo, se me terminaron las vacaciones , pero me da la oportunidad de probar el asunto en varios ordenadores.
He usado el testmsg3.prg del samples para generar esta imagen. Eso ya es de otro ordenador, y el sample es bastante simple.
El comportamiento es bastante particular. Uso para superponer la misma ventana de DOS desde la que he regenerado el EXE.
Al principio funciona bien, pero luego de activar alternativamente una y otra comienza el fallo, que te he marcado con un círculo rojo.
El fallo no es permanente, hay que insistirle. ¿Sabes de algún software que filme la actividad de la pantalla? Sería la mejor manera de mostrarte el problema.
Un saludo,
Carlos.
Hoy ya volví al trabajo, se me terminaron las vacaciones , pero me da la oportunidad de probar el asunto en varios ordenadores.
He usado el testmsg3.prg del samples para generar esta imagen. Eso ya es de otro ordenador, y el sample es bastante simple.
El comportamiento es bastante particular. Uso para superponer la misma ventana de DOS desde la que he regenerado el EXE.
Al principio funciona bien, pero luego de activar alternativamente una y otra comienza el fallo, que te he marcado con un círculo rojo.
El fallo no es permanente, hay que insistirle. ¿Sabes de algún software que filme la actividad de la pantalla? Sería la mejor manera de mostrarte el problema.
Un saludo,
Carlos.
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
el punto es encontrar el porqué, ya que me ocurre lo mismo cuando dibujo controles. Contra más elaborado el control el defecto se nota más, y solo aparece en el repintado de ventanas no activas. Algo cambiará en los mensajes o en la prioridad del proceso repintado que no permite que los controles ownerdraw se terminen de repintar o algo así.
Un saludo,
Carlos.
Un saludo,
Carlos.