这是设置:
我有两个视图在两个不同的vcl表单中实现。对于其中一个我应用了一种风格,使它看起来像一个触摸优化的地铁应用程序。 可以根据应用程序的设置切换这些表单。 (显示触摸优化视图开/关)
这非常好用。我重写Application.MainForm
,旧表单关闭,新表单出现(并获得焦点)。
我希望在Windows 10中实现自动化。作为附加视图模式,我提供了一个“自动检测”选项:
WM_SETTINGCHANGE
。这是通过在桌面模式和平板电脑模式之间切换发送的。 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell\TabletMode
这就是问题:
旧表单被销毁,弹出新表单,Application.MainForm
引用新表单。
之后,平板电脑模式的开始屏幕弹出并显示在所有窗口的最顶部。
因此,我的新触控优化形式在此屏幕后消失并失去焦点。如果我将视图固定到桌面视图并将窗口10切换到平板电脑模式,则不会出现此行为。在这种情况下,我的应用程序保持焦点并最大化自己(当然,没有形成任何形式)。
到目前为止我尝试了什么:
Application.MainForm.BringToFront
。这不起作用。FormStyle := fsStayOnTop
(这样就应该重点关注)并从WinAPI调用SetForeground(Application.MainForm.Handle)
。任何想法?