CtrlDrawFocus() no dibuja bien el marco (solucionado)
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
CtrlDrawFocus() no dibuja bien el marco (solucionado)
Al seleccionar un item, el recuadro aparece más arriba.
A ver si damos con la solución, gracias!
A ver si damos con la solución, gracias!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: CtrlDrawFocus() no dibuja bien el marco
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()
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()
Re: CtrlDrawFocus() no dibuja bien el marco
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)
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)
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: CtrlDrawFocus() no dibuja bien el marco
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"
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"
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: CtrlDrawFocus() no dibuja bien el marco
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:
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
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 ) ) );
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: CtrlDrawFocus() no dibuja bien el marco
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/mic ... nload.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...
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/mic ... nload.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...
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: CtrlDrawFocus() no dibuja bien el marco
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:
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...
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
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++;
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: CtrlDrawFocus() no dibuja bien el marco
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!
Rogaría que alguien lo pruebe, que no tenga este cambio en FWH, para que así nos aseguremos de que funciona correctamente.
Gracias!
Re: CtrlDrawFocus() no dibuja bien el marco (solucionado)
Jod....... Antonio
La explicación de 10
De mayor quiero ser como tu
Gracias
La explicación de 10
De mayor quiero ser como tu
Gracias
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: CtrlDrawFocus() no dibuja bien el marco (solucionado)
Te aseguro que tu tambien tienes un nivelazo técnico
Muchos aqui ya lo tienen
Muchos aqui ya lo tienen