【问题标题】:How to automatically restore focus to a launched application on Windows如何自动将焦点恢复到 Windows 上已启动的应用程序
【发布时间】:2014-10-27 12:18:18
【问题描述】:

我开发了一个全屏应用程序,它可以连接到第三方/客户端应用程序并由它启动。问题是客户端应用程序在启动我的应用程序后很快获得焦点,结果虽然我的应用程序是全屏的,并且设置在顶部,但它不接收键盘输入,因此用户必须单击它使其成为焦点,这会导致糟糕的用户体验。

在客户端获取应用程序后,我如何才能恢复对应用程序的关注?

如果重要的话,我的应用程序是用 C++ 编写的,并且有一个 QT UI。

【问题讨论】:

  • 不知道您是否能够解决您的问题?

标签: windows qt winapi


【解决方案1】:

不完全是答案,但我的应用程序没有输入焦点的原因。我会让 Charles Petzold 解释(来自 Programming Windows 5ed,pg 213)

接收特定键盘事件的窗口是具有输入焦点的窗口。输入焦点的概念与活动窗口的概念密切相关。具有输入焦点的窗口要么是活动窗口,要么是活动窗口的后代窗口——即活动窗口的子窗口,或活动窗口的子窗口的子窗口,依此类推。

我的 Qt 应用程序不是由活动窗口生成的,因此没有输入焦点。因此,解决方案是将我的应用程序作为活动窗口的父级。不幸的是,如果可能的话,这在 Qt 中并不简单。

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多