Почему заголовки окон черные и кнопки иногда остаются без рамки во время отладки - PullRequest
5 голосов
/ 15 апреля 2011

При отладке моих окон и диалогов Win32 Applications иногда (редко) не появляются в выбранной схеме Windows, а наоборот уменьшаются или ломаются:

enter image description here

Все заголовки окна черные (вместо синего или серебряного) и без тени. Кнопки не имеют никакой формы кнопки (на снимке экрана «Abbrechen»). Черная полоса в нижней части окна - это индикатор выполнения Windows. Это не показывает никакого прогресса, когда это происходит.

Снимок экрана (подробности в центре выделены серым цветом) был взят из 64-разрядного приложения, отлаженного под Visual Studio 2010 на XP SP3 x64, и на машине объемом 10 ГБ. Было достаточно ОЗУ (несколько ГБ).

У кого-нибудь есть подсказка по причине? Я никогда не занимаюсь рисованием вне клиентской области или чем-то подобным.

РЕДАКТИРОВАТЬ: Симптом возникает только тогда, когда отладчик Visual Studio был подключен к программе. Но даже когда приложение было отсоединено от отладчика, проблема остается. Это не происходит при запуске программы без отладки.

Ответы [ 5 ]

1 голос
/ 02 мая 2011

Есть как минимум две возможности.

  1. Вы используете какой-то другой «движок тем», отличный от нативного XP, например, Clearlooks и т. Д. Эти движки могут не всегда соответствовать всем требованиям отладчиков, они могут оставить свой насос сообщений незаполненным для некоторых неявно предполагаемых (в отладчик), а затем рисунок просто глохнет. То же самое часто случается при использовании какого-либо менеджера виртуальных рабочих столов в Windows, оконный менеджер Windows просто слишком зашитый ..

  2. Даже 32-битные программы в 32-битных окнах могут работать без дескрипторов, это часто приводит к тому, что окна начинают отображаться шрифтом «Fixedsys». Ваше приложение показывает симптомы только для частей, обработанных темой, что указывает на возможность № 1 снова.

Попробуйте проверить соответствующие окна с помощью WinSpy и Process Explorer. Неоправданное количество выделенных ресурсов может указывать на то, что происходит с голодом.

0 голосов
/ 05 мая 2011

Я читал о таких симптомах (некоторое время назад), поэтому я снова погуглил и нашел форум. Кажется, есть проблема с некоторыми драйверами NVIDIA на WinXP-64. Также некоторые люди могут избавиться от этой проблемы, уменьшив аппаратное ускорение.

Вы можете самостоятельно прочитать следующий форум (5 страниц) и решить, относится ли он к вашей ситуации.

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

0 голосов
/ 05 мая 2011

Для применения визуальных стилей в вашем приложении обязательно вызовите его перед запуском окна, например:

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

У меня раньше была такая же проблема, особенно при использовании сторонних компонентов, которыеиспользовать свои собственные методы оформления, такие как Infragistics или ComponentOne

0 голосов
/ 03 мая 2011

Мы сталкиваемся с такими проблемами.На самом деле это было связано с нашим антивурусом (не уверен, но я думаю, что это был McAfee Viruscan на данный момент).

0 голосов
/ 01 мая 2011

Установили ли вы SP1 для Visual Studio 2010?У меня еще не было этой проблемы, но я знаю, что SP1 исправил много проблем с VS2010.

Другая вещь, которую я знаю, это то, что WinXP x64 (который все еще sp2, а не 3 между прочим) невсегда играй красиво.Это не так хорошо поддерживается, как версия x86.Win Vista и 7 x64 обеспечивают более плавную работу.(У меня были некоторые неудачные опыты с XP x64)

...