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