小编Flo*_*mel的帖子

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

这是设置:

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

这工作得很好.我重写Application.MainForm,旧表单关闭,新表单出现(并获得焦点).

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

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

这就是问题所在:

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

到目前为止我尝试过的:

  1. 最明显的方法是召唤. Application.MainForm.BringToFront这不起作用.
  2. 我的第二种方法是创建一个隐藏的"辅助形式" FormStyle := fsStayOnTop(需要重点关注)和SetForeground(Application.MainForm.Handle)来自WinAPI的调用.

有任何想法吗?

forms delphi vcl vcl-styles windows-10

5
推荐指数
0
解决办法
1392
查看次数

在Windows Vista进度对话框中显示更多详细信息选项

我使用IProgressDialog接口来创建一个Windows-Vista风格的ProgressDialog,如下所示:

我的ProgressDialog

在Windows资源管理器中复制,粘贴和移动文件时显示的对话框通常会提供一个"更多详细信息"按钮,提供有关当前进度的更多信息.

Windows中的ProgressDialogs

有关IProgressDialog界面是否有可能显示和使用此按钮?

最好的祝福

winapi dialog shell32 progressdialog

2
推荐指数
1
解决办法
358
查看次数

标签 统计

delphi ×1

dialog ×1

forms ×1

progressdialog ×1

shell32 ×1

vcl ×1

vcl-styles ×1

winapi ×1

windows-10 ×1