在我面前的 C++ builder 2010 项目中有一个奇怪的场景。每隔一段时间,模态形式似乎就会落后于主要形式。如果我有主窗口,似乎会发生这种情况,使用主窗口上的按钮打开辅助窗口,然后选择主窗口上的一个按钮,该按钮将产生一个模态表单弹出窗口。模态表单然后在主窗口后面结束,我必须按退出键才能关闭它。
再次打开它会产生所需的结果,模式窗口位于顶部。
有时一旦完成,主窗口似乎开始将自己放在每个窗口的前面。不仅是它自己的模态窗口或子窗口,甚至还有 Windows Explorer 窗口和其他程序。更新:每当模态窗口结束在主窗口后面并使用转义关闭时,都会发生这种情况。使主窗口再次正常运行的唯一方法是重新启动应用程序。
我已经检查并摆弄了主窗口和模式弹出窗口的 F ormStyle和PopupMode属性,这是最初的问题。但这似乎没有帮助。主窗口有
FormStyle: fsNormal
PopupMode: pmNone
由于主窗口开始表现得很奇怪,感觉问题出在主窗口上。我尝试专门告诉模态窗口将主窗口用作其父窗口,并尝试所有设置和FormStyle和PopupMode的组合而不做任何更改。
除此之外,据报道所有这些都在 Vista 之前有效(是的,这是一个古老而大型的应用程序......呵呵)
更新:罪魁祸首似乎是主窗口,它最终位于一切之上。这会导致模态表单最终出现在其后面,并且看起来好像有问题。这只发生在第一次,重新打开模态表单会将其绘制在Main Window前面。即使主窗口仍然位于桌面上其他所有内容的前面。更令人困惑的是,当主窗口决定开始像这样运行时,感觉非常随机。