调试我的Win32应用程序时,窗口和对话框有时(很少)不会出现在所选择的Windows方案中,而是减少或损坏:
窗口标题全部为黑色(而不是蓝色或银色)且没有任何阴影。按钮没有任何按钮形状(屏幕截图中的“Abbrechen”)。下半部分的黑条是一个窗口进度条。发生这种情况时,它没有显示任何进展。
屏幕截图(中心灰色显示的细节)取自在XP SP3 x64和10 GB机器上的Visual Studio 2010下调试的64位应用程序。有足够的RAM(一些GB)备用。
有没有人知道原因?我从不做非客户区绘图或其他什么。
编辑:仅当Visual Studio调试程序已附加到程序时才会出现此症状。但即使应用程序已从调试器中分离,问题仍然存在。在没有调试的情况下启动程序时不会发生这种情况。
答案 0 :(得分:1)
至少有两种可能性。
你使用了一些其他的“主题引擎”,而不是XP本机,例如Clearlooks等。这些引擎可能并不总是符合调试人员想要的所有东西,他们可能会留下他们的消息泵取消某些隐含的假设(在调试器)点,然后绘图只是停止。在Windows上使用一些虚拟桌面管理器时经常发生同样的事情,Windows窗口管理器太简单了。
即使32位窗口中的32位程序也可能会耗尽句柄,这通常会导致窗口开始使用“Fixedsys”字体进行渲染。您的应用程序仅显示主题处理部分的症状,这种情况再次表明可能性为nr.1。
尝试使用WinSpy和Process Explorer检查相关窗口,不合理的分配资源量可能暗示正在进行什么样的饥饿。
答案 1 :(得分:0)
您是否为Visual Studio 2010安装了SP1?我还没有遇到这个问题,但是知道SP1修复了VS2010的很多问题。
我知道的另一件事是WinXP x64(仍然是sp2而不是3 btw)并不总是很好玩。它不如x86版本支持。 Win Vista和7 x64可以让操作更顺畅。 (我自己在XP x64上遇到过一些糟糕的经历)
答案 2 :(得分:0)
我们遇到这种麻烦。事实上,这是由于我们的防病毒软件(不确定,但我认为目前是McAfee Virusscan)。
答案 3 :(得分:0)
要在应用程序中强制使用视觉样式,请确保在运行窗口之前调用它,如下所示:
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
我之前遇到过同样的问题,特别是当使用第三方组件使用他们自己的样式方法,如Infragistics或ComponentOne
答案 4 :(得分:0)
我读过这些症状(前一段时间)所以我再次搜索它并找到论坛。 WinXP-64上的某些NVIDIA驱动程序似乎存在问题。还有一些人可以通过减少硬件加速来摆脱这个问题。
您可以自己阅读以下论坛(5页)并确定它是否适用于您的情况。