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