在 Windows 98 时代之后,我们多次经历过一些对话框失去了它们的 Z-Order 并返回到以前的形式。
例如:
Dialog1.ShowModal;
Dialog1.OnClickButton() : ShowMessage('anything');
当MessageBox 出现时,它有时没有焦点,被移到Dialog1 下。用户对此感到困惑,他们说:我的应用程序冻结了!!!但如果他们使用 Alt+Tab 移动到另一个应用程序并返回,焦点将返回到 MessageBox,它将成为前台窗口。
我们在 ShowMessage、MessageBox、普通表单和 QuickReport 表单中都经历过这种情况。
有人知道吗?它是Windows错误吗?你怎么能防止它?如何抓住这个?
感谢您的帮助:dd
我真的说过,在Win98之后,所以所有的操作系统(Win7也是)都受到这个问题的影响。我们使用了 Delphi 6 Prof,因此这些属性不适用于默认表单。
有人说消息对话框可以用 MessageBox + MB_APPLMODAL 控制。这是个好消息,但我们有许多旧的表单和组件、第三方工具。
因此,通过表格替换来制作一个全新的应用程序是一项艰巨的工作。
但我们会尝试这样做。
我认为答案是一半是应用程序问题,一半是 Windows 问题。如果 Windows 有时会处理这个问题,有时不会 - 这似乎是一个 Windows 错误。但是如果我们可以强制制作好的模态窗口,那么它就是一个编程错误。
有人可以向我解释 WS_POPUP 标志的含义是什么吗?它有没有副作用?
谢谢:dd