4

我有一个 Delphi 2006 应用程序,当检测到错误情况时会弹出一个模式警报对话框。由于错误条件的检查是在空闲处理程序中完成的,因此如果碰巧显示了另一个模式对话框,则该对话框可以弹出到另一个模式对话框的顶部。这可能会导致用户感到困惑,即在关闭警报对话框后应用程序主窗体没有获得焦点,因为这是另一个模糊的模态对话框。

我想做的是在应用程序打开任何模态对话框时推迟警报弹出窗口。

我试过 GetLastActivePopup (MyMainWindow.Handle) 但它似乎一直返回非零。

4

3 回答 3

5

请参阅TApplication.ModalLevelTApplication.OnModalBeginTApplication.OnModalEnd事件。另请参阅此问题

于 2010-07-22T07:10:35.213 回答
3

只是测试

if not IsWindowEnabled(MyMainWindow.Handle) then

当非 Delphi 对话框处于模态时,这也将处理情况,例如在windows.MessageBox(Handle.... 或显示一个通用对话框(即 TOpenDialog)。

于 2010-07-22T10:08:31.307 回答
2

使用AnyPopup () 函数

关于GetLastActivePopup ()。它可能返回值与 hWnd 参数相同时

  • hWnd 标识的窗口最近处于活动状态。
  • hWnd 标识的窗口不拥有任何弹出窗口。
  • 由 hWnd 标识的窗口不是顶级窗口,或者它属于另一个窗口。
于 2010-07-22T07:06:34.220 回答