CtrlDrawFocus() no dibuja bien el marco (solucionado)

CtrlDrawFocus() no dibuja bien el marco (solucionado)

Postby Antonio Linares » Fri Aug 15, 2014 12:45 pm

Al seleccionar un item, el recuadro aparece más arriba.

A ver si damos con la solución, gracias! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: CtrlDrawFocus() no dibuja bien el marco

Postby Antonio Linares » Fri Aug 15, 2014 12:48 pm

Cristobal,

Por lo que veo Timm usa una ventana principal MDI y no lo he verificado pero imagino que las áreas sean ventanas MDICHILDs.

Lo has comprobado tu ? gracias

Esto influiría en el comprotamiento de CtrlDrawFocus()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: CtrlDrawFocus() no dibuja bien el marco

Postby cnavarro » Fri Aug 15, 2014 12:50 pm

Eso es lo que estaba mirando antes de ponerme con las Transparencias
Porque el tema del desplazamiento hacia abajo de los items cuando usaba el scroll podia ser tambien por el cambio de coordenadas, es a lo que te refieres?
O por los valores que toma (que imagino que dependerían de la resolucion usada)
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: CtrlDrawFocus() no dibuja bien el marco

Postby Antonio Linares » Fri Aug 15, 2014 2:11 pm

Cristobal,

Me refiero a que en CtrlDrawFocus() comprobamos si hay "padres" del control con "caption", luego en el caso de ser MDICHILD, tendriamos la ventana MDICHILD contenedora, y la ventana principal de la aplicación. No he comprbado si hay algun otro "padre" (contenedor) intermedio.

Las coordenadas se ajustan en función de esos "padres" con "caption"
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: CtrlDrawFocus() no dibuja bien el marco

Postby Antonio Linares » Fri Aug 15, 2014 2:17 pm

Cristobal,

Efectivamente esta usando MDICHILDs (aun no he verificado si usa algún contenedor intermedio).

Y con este pequeño cambio en CtrlDrawFocus() de FWH ya dibuja el marco bien, ahora el problema es ver como hacer este cambio sin que nos afecte en otras aplicaciones de FWH:

Línea 303 de ctrldraw.c:

Code: Select all  Expand view  RUN
  iParentsWithCaption++; // nuevo !!!
   
   pt.x = rct.left;
   pt.y = rct.top;
   ScreenToClient( hWndParent, &pt );
   rct.left = pt.x + ( iParentsWithCaption * GetSystemMetrics( SM_CXFRAME ) );
   rct.top  = pt.y + ( iParentsWithCaption * ( GetSystemMetrics( SM_CYCAPTION   ) + GetSystemMetrics( SM_CYFRAME ) ) );
   
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: CtrlDrawFocus() no dibuja bien el marco

Postby Antonio Linares » Fri Aug 15, 2014 2:45 pm

Cristobal,

Usando Spy++ de Microsoft, que no viene incluido en la versión express de Visual Studio, pero lo he encontrado aqui:

http://mdb-blog.blogspot.mx/2010/11/microsoft-spy-or-spyxx-for-download.html

he podido salir de dudas. Efectivamente cada área es una ventana MDICHILD sin titulo. Encima de ella hay un bitmap para cada regla (superior e izquierda) y el título que vemos es un control static, sobre el que hay otro static con el título y dos TBtnBmps.

Voy a probar a cambiar CtrlDrawFocus() para que no cuente los títulos sino los padres...
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: CtrlDrawFocus() no dibuja bien el marco

Postby Antonio Linares » Fri Aug 15, 2014 3:05 pm

Ok, lo he solucionado pero de otra forma.

Las ventanas MDICHILD que usa Timm aunque no muestran su caption, si lo tienen asignado. Entonces he caido en la cuenta de que es la ventana MDICLIENT la que no se estaba teniendo en cuenta y lo he solucionado asi:

Code: Select all  Expand view  RUN
  while( GetParent( hWndParent ) )
   {
      #ifndef UNICODE
         char ClassName[ 100 ];
      
         GetClassName( hWndParent, ClassName, 99 );

         if( strcmp( ClassName, "#32770" ) == 0 ) // a Modal Dialog
            break;

         if( lstrcmp( ClassName, "MDIClient" ) == 0 ) // MDIClient
            iParentsWithCaption++;   


Ya está funcionando bien. El único problema que le veo a esto es que no le funcionará bien a quien no tenga un FWH actualizado, asi que lo suyo es copiar esta función en los fuentes de ER. Voy a probarlo...
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: CtrlDrawFocus() no dibuja bien el marco

Postby Antonio Linares » Fri Aug 15, 2014 3:15 pm

Ok, probado y subido al repositorio de ER.

Rogaría que alguien lo pruebe, que no tenga este cambio en FWH, para que así nos aseguremos de que funciona correctamente.

Gracias! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: CtrlDrawFocus() no dibuja bien el marco (solucionado)

Postby cnavarro » Fri Aug 15, 2014 9:04 pm

Jod....... Antonio
La explicación de 10
De mayor quiero ser como tu :D :D :D :D
Gracias
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: CtrlDrawFocus() no dibuja bien el marco (solucionado)

Postby Antonio Linares » Fri Aug 15, 2014 9:56 pm

Te aseguro que tu tambien tienes un nivelazo técnico :-)

Muchos aqui ya lo tienen :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to EasyReport, EasyDialog y EasyPreview

Who is online

Users browsing this forum: No registered users and 1 guest