我有一个应用程序调用一些其他实用程序应用程序来设置特定设备的一些设置.使用ShellExecuteEx调用该实用程序.
为了不混淆用户,最好将实用程序应用程序的窗口设置为我的主窗口.怎么做到这一点?
我试过的事情:
简而言之,即使线程位于同一进程中,也无法无缝地使线程 B 中的窗口成为线程 A 中窗口的模式。如果您拥有两个窗口的代码,您可能能够接近,但在这种情况下,通过将所有 UI 放在一个线程中,您将获得更好的结果。
如果您尝试向用户建议线程 B 的窗口对于线程 A 来说是模态的,那么您必须正确处理许多微妙的 Z 顺序和激活行为(正如您所注意到的),以免您遭受恐怖谷效应排序,用户很清楚线程 B 的窗口正在尝试成为它不是的东西,因此看起来已损坏。
为了避免这种情况,我会采取这种方法:
这样,如果一切正常且快速地进行,则交互很可能是无缝的,但如果子进程出现问题或 Z 顺序发生更改等,就会清楚父进程为何等待以及用户正在做什么需要取消或继续他开始的任务。
| 归档时间: | 
 | 
| 查看次数: | 5884 次 | 
| 最近记录: |