2011-04-15 16 views
5

Al depurar mis Win32 Aplicaciones ventanas y cuadros de diálogo veces (raramente) no aparecen en el esquema de Windows elegido, sino más bien reducido o roto:¿Por qué la ventana subtítulos Negro y botones sin marco veces durante la depuración

enter image description here

Los títulos de la ventana son todos negros (en lugar de azul o plateado) y sin ninguna sombra. Los botones no tienen forma de botón ("Abbrechen" en la captura de pantalla). La barra negra en la mitad inferior es una barra de progreso de Windows. No muestra ningún progreso cuando esto sucede.

La captura de pantalla (los detalles en el centro aparecen atenuados) se tomó de una aplicación de 64 bits depurada en Visual Studio 2010 en XP SP3 x64 y una máquina de 10 GB. Había suficiente RAM (algunos GB) de repuesto.

¿Alguien tiene una pista por la razón? Nunca hago dibujo de área no cliente o algo así.

EDIT: El síntoma solo se produce cuando el Visual Studio Debugger se ha adjuntado al programa. Pero incluso cuando la aplicación se ha desconectado del depurador, el problema persiste. No ocurre al iniciar el programa sin depuración.

+0

¿Es esta una aplicación C# o C++? –

+0

Se trata de una aplicación C++ no administrada Win32. –

+0

Nunca he visto áreas negras como esa en aplicaciones MFC durante la depuración, especialmente en el área no cliente (la parte que tiene con el título "waugs wird gelesen"). Esa parte normalmente la representa Windows, no MFC o su código. Es por eso que me pregunto si estás usando algún tema "sofisticado". –

Respuesta

0

¿Has instalado SP1 para Visual Studio 2010? Todavía no he tenido este problema, pero sé que SP1 solucionó muchos problemas con VS2010.

La otra cosa que sé es que WinXP x64 (que sigue siendo sp2 y no 3 por cierto) no siempre funciona bien. No es tan compatible como la versión x86. Win Vista y 7 x64 permiten una operación mucho más suave. (He tenido algunas malas experiencias con XP x64)

+0

Sí, tengo SP1 instalado para VC 2010. Ese no es el problema. –

1

Hay al menos dos posibilidades.

  1. Se utiliza algún otro "motor del tema" que el XP nativo, por ejemplo Clearlooks, etc. Estos motores no siempre pueden cumplir con todos los depuradores cosa quieren, pueden dejar su suministro de mensajes no bombeado en alguna supuesto implícitamente (en depuración), y luego el dibujo simplemente se para. Lo mismo sucede a menudo cuando se usa un administrador de escritorio virtual en Windows, Windows Window Manager simplemente está demasiado cableado.

  2. Incluso los programas de 32 bits en ventanas de 32 bits pueden quedarse sin controladores, esto a menudo hace que las ventanas comiencen a procesarse con "Fixedsys" "fuente. Su aplicación muestra síntomas solo para las porciones manejadas por tema, lo que indica la posibilidad nr.1 nuevamente.

Trate de inspeccionar las ventanas pertinentes con WinSpy y el explorador de procesos, cantidades razonables de los recursos asignados pueden hacer alusión en lo inanición tipo que está pasando.

+0

Gracias por su respuesta, pero también pensé en tales posibilidades. El problema ocurre solo algunas veces durante el inicio del programa. Es muy poco probable que haya una escasez de identificadores de GDI, pero lo verificaré. No uso un motor de tema diferente también. –

+1

@RED SOFT ADAIR intente depurar el programa (y comenzar con) windbg. Una vez, nuestro programa se bloqueó porque el software Logitech SetPoint inyectó un dll de monitoreo clave mientras nuestro programa estaba comenzando y se dañó (probablemente se acumuló) de una manera que nuestro (muy viejo) sistema de inicio de sesión no pudo manejar. windbg muestra bastante obviamente qué cosas se cargan (se mostró más claramente que la vista de módulos de VS). –

+0

Esa es una muy buena idea @Pasi –

0

Nos encontramos con este tipo de problemas. De hecho, se debió a nuestro antivirus (no estoy seguro, pero creo que fue McAfee Viruscan en este momento).

+0

¿Has visto un comportamiento similar? ¿Falta elementos de GUI, fuentes reducidas, etc.? –

+0

Sí exactamente. Pasamos mucho tiempo instrumentando nuestro código (escrito en .NET). Finalmente construimos un programa simple de Windows Form con un campo de entrada y un botón, cuando ocurrió el problema, el botón del programa simple desapareció. Una vez que el antivirus se deshabilitó, nunca más volvió a suceder. Quizás no es tu caso, pero solo pruébalo. – JPBlanc

0

Hacer cumplir los estilos visuales en su aplicación asegúrese de llamar antes de ejecutar la ventana, así:

static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.Run(new Form1()); 
} 

que he tenido el mismo problema ocurrió antes, especialmente cuando se utilizan componentes de 3 ª parte que utilizan sus propios métodos de estilo como Infragistics o ComponentOne

+0

RedSoft está hablando de Win32 y no de .NET. Usted ha publicado una respuesta C#. –

+0

Para ser justos, el OP no nos lo dijo hasta hace poco, mucho después de que Michel intentó ayudar. Desearía que hubiera una función específica de downvote-por-no-intentar-etiquetar-mi-pregunta-con-idiomas. –

0

Leí acerca de tales síntomas (hace un tiempo) así que busqué en Google nuevamente y encontré el foro. Parece que hay un problema con algunos controladores NVIDIA en WinXP-64. También algunas personas podrían deshacerse del problema al reducir la aceleración del hardware.

Puede leer el siguiente foro (5 páginas) usted mismo y decidir si se aplica a su situación.

http://forums.nvidia.com/index.php?showtopic=67608

Cuestiones relacionadas