1

我在使用 VCL 样式时遇到了一个非常奇怪的问题。有时,当使用预定义的样式启动程序或稍后设置一个时,一个或一些程序窗口会消失。

这非常随机发生,可能每 10-20 次发生一次,而不是在任何特定窗口中。我在运行时打开了 2 个表单,有时是一个,有时是另一个。

发生这种情况时,我会在窗口不可见时检查一些属性,Visible 属性为 true,窗口边界正确;如果我尝试通过 Aero DWM 实时缩略图显示窗口.. 它也是空的;但是,如果我捕获窗口 DC,我会得到一个带有窗口的位图,就好像它正常显示一样(并且已应用样式)。

它没有显示任何错误,没有警告,没有异常......似乎没有任何问题,只是窗口不存在。如果我将鼠标悬停在任务栏按钮上以查看预览,它会显示该框,但它是空的。

任何想法要检查什么?

编辑:调用 RecreateWnd 将问题修复为临时解决方法,但是,它可能会再次失败。

4

1 回答 1

2

找到问题的原因:“Alphablend”。如果启用此功能,即使在 255 时,也会出现问题。

重现步骤:

  • 打开新的 VCL 表单项目
  • 项目选项,外观,设置风格主题。我使用 Cobalt XE 进行测试
  • 将 Alphablend 设置为 true

可能需要运行 10-20 次才能出现故障。

我注意到当它发生时,窗口实际上就在那里..你可以将鼠标悬停在上面并注意到那里有东西。如果您猜到它们的位置,您甚至可以单击控件。如果您设法在窗口不可见时拖动它,它将显示出来。如果您最小化/恢复它也会显示出来。

如果您在窗口处于活动状态时执行 alt+PrtScr 并粘贴到 Paint 等中,您将获得它后面的内容以及窗口边界,就好像 alphablendvalue 设置为 0。

于 2012-04-05T05:10:05.037 回答