Windows-10-IOT QT-C++/QML App Fullscreen Gui 当显示器重新打开时冻结

问题描述 投票:0回答:1

问题:
在没有键盘的触摸屏上,我在 Windows 10 IOT 上运行的 QT C++/QML 应用程序具有全屏 GUI“冻结”,当显示器打开时(在用户触发触摸屏之后),在它提前超时之后并因电源设置而关闭。鼠标光标仍在更新。

QML GUI 有“标志:Qt.FramelessWindowHint | Qt.Window”;我不想添加“Qt.WindowStaysOnTopHint”,因为它会在从应用程序打开时阻止控制面板窗口。验证程序仍在运行,只是GUI从屏幕关闭的时间点冻结了。

临时决议:
“解冻”全屏 GUI 的唯一方法是连接键盘并按 Windows 键显示-隐藏开始菜单,或者使用放置在已知位置的手动 QML 按钮或在检测到监视器 WM_POWERBROADCAST 消息时以编程方式执行此操作.

当应用程序不是全屏时,冻结似乎并没有发生。

这是由于操作系统在全屏或按下开始菜单按钮时向应用程序发送了一些缺少的 WM_MESSAGES(例如 WM_PAINT、WM_ACTIVATE 等)吗?

是否可以通过应用程序以编程方式向自身发送一系列 WM_MESSAGES 而不是 Win 按钮按键(因为普通用户不应该访问操作系统或查看应用程序运行时与操作系统相关的任何内容)?

user-interface qml fullscreen freeze
1个回答
0
投票

我尝试使用 winAPI SetForegroundWindow() 函数...?

:-(快进几天...

经过进一步测试,似乎单独使用 SetForegroundWindow() 并不一致/可靠。有时有效,有时无效。

最可靠的仍然是应用程序发送的 VK_LWIN 按键。但是,如前所述,应用程序用户不应该看到开始菜单出现然后消失。如果 VK_LWIN 按键的行为可以在不看到开始菜单的情况下复制到应用程序中,那么最好...

© www.soinside.com 2019 - 2024. All rights reserved.