如何在Windows 10平板电脑模式下强制delphi表单处于前台

时间:2015-09-21 11:21:40

标签: forms delphi windows-10 vcl vcl-styles

这是设置:

我有两个视图在两个不同的vcl表单中实现。对于其中一个我应用了一种风格,使它看起来像一个触摸优化的地铁应用程序。 可以根据应用程序的设置切换这些表单。 (显示触摸优化视图开/关)

这非常好用。我重写Application.MainForm,旧表单关闭,新表单出现(并获得焦点)。

我希望在Windows 10中实现自动化。作为附加视图模式,我提供了一个“自动检测”选项:

  1. 我正在收听Windows消息WM_SETTINGCHANGE。这是通过在桌面模式和平板电脑模式之间切换发送的。
  2. 然后我在注册表中查看HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell\TabletMode
  3. 的值
  4. 如果是1,我会切换到触控优化视图。
  5. 这就是问题:

    旧表单被销毁,弹出新表单,Application.MainForm引用新表单。 之后,平板电脑模式的开始屏幕弹出并显示在所有窗口的最顶部。 因此,我的新触控优化形式在此屏幕后消失并失去焦点。如果我将视图固定到桌面视图并将窗口10切换到平板电脑模式,则不会出现此行为。在这种情况下,我的应用程序保持焦点并最大化自己(当然,没有形成任何形式)。

    到目前为止我尝试了什么:

    1. 最明显的方法是召唤 Application.MainForm.BringToFront。这不起作用。
    2. 我的第二种方法是创建一个隐藏的“辅助形式”,它需要FormStyle := fsStayOnTop(这样就应该重点关注)并从WinAPI调用SetForeground(Application.MainForm.Handle)
    3. 任何想法?

0 个答案:

没有答案