我遇到了VCL样式的一个非常奇怪的问题。有时,无论是以预定义的样式启动程序,还是稍后设置一个程序,都会消失一个或一些程序窗口。德尔福XE2 VCL样式,奇怪的小故障,窗口不可见
这种情况非常随机,可能每10-20次发生一次,而不是在任何特定的窗口中。我有两种形式在运行时打开,有时是一种,有时是另一种。
发生这种情况时,我检查一些属性,而窗口不可见,Visible属性为true,窗口边界是正确的;如果我试图通过Aero DWM实时缩略图显示窗口,它也是空的;如果我捕获窗口DC,但是我得到一个带有窗口的位图,就好像它正常显示(并且样式已经应用)。
它不显示任何错误,没有警告,没有例外..没有什么似乎错了,只是窗口不存在。如果我将鼠标悬停在任务栏按钮上以查看预览,则会显示该框,但它是空的。
任何想法要检查什么?
编辑:调用RecreateWnd将问题解决为临时解决方法,但是,它可能会再次失败。
胡乱猜测,它需要RecreatWnd。如果您点击任务栏中显示的预览,会发生什么情况? – 2012-04-04 18:22:43
什么都没有。该程序变为活动状态,但不显示任何内容。如果我切换到另一种样式(通过托盘图标菜单),它会再次显示。看到这里,通过任务栏预览显示每个表单不同的两种情况:http://i.imgur.com/WT7KK.png http://i.imgur.com/gjClr.png另外,如果我做了一个bitblt在DC上,它捕捉正确应用样式的窗口。 – hikari 2012-04-04 22:04:10
调用RecreateWnd修复了这个问题,我将在启动时调用此方法,并将样式更改为临时解决方法。 – hikari 2012-04-05 00:33:29