我遇到了VCL风格的一个非常奇怪的问题。有时,当使用预定义样式启动程序或稍后设置程序时,一个或一些程序窗口消失。
这种情况非常随机发生,可能每10-20次发生一次,而不是在任何特定窗口中发生。我有2个表单在运行时打开,有时它是一个,有时是另一个。
当发生这种情况时,我检查窗口不可见时的一些属性,Visible属性为true,窗口边界是否正确;如果我试图通过Aero DWM实时缩略图显示窗口..它也是空的;但是,如果我捕获窗口DC,我会得到一个带有窗口的位图,就像它正常显示一样(并且已经应用了样式)。
它没有显示任何错误,没有警告,没有例外......似乎没有错,只是窗口不在那里。如果我将鼠标悬停在任务栏按钮上以查看预览,它会显示该框,但它是空的。
任何想法要检查什么?
编辑:调用RecreateWnd将问题修复为临时解决方法,但是,它可能会再次失败。
答案 0 :(得分:2)
找到问题的原因:“Alphablend”。如果启用此功能,即使在255,也会出现问题。
重现的步骤:
可能需要10-20次运行才能出现故障。
我注意到它发生时,窗口实际上就在那里......你可以将鼠标悬停在上面,注意那里有东西。如果您猜测它们的位置,您甚至可以单击控件。如果您设置在不可见的情况下拖动窗口,它将显示出来。如果你最小化/恢复它也会出现。
如果在窗口处于活动状态时执行alt + PrtScr,并粘贴在Paint等中,您将获得窗口边界后面的内容,就像alphablendvalue设置为0一样。