顶层窗口最小化时,popup窗口无法接收焦点

我创build了一个popup窗口( WS_POPUP , WS_EX_TOPMOST , WS_EX_TOOLWINDOW ),它可以在单击时获得焦点(通过调用WM_LBUTTONDOWN处理程序中的SetFocus )。 所有的工作,直到我最小化主应用程序窗口(popup仍然可见) – 现在当我点击popup窗口,它立即失去了重点。 为什么会发生这样的情况,不应该popup的窗口与主窗口完全无关,因为它不是一个孩子或什么东西?

更新:这似乎与WS_POPUP有关。 尝试在主应用程序窗口最小化时单击一个窗口,会闪烁其任务栏图标,并立即杀死焦点。

使用dek Web Cam的API?

点击聚焦forms丢失

窗口消息:WM_CREATE和WM_NCCREATE不同?

OpenCV countour / convexHull错误

使用与Windows和Python 2.6.1的猎豹模板系统(名称映射问题)

点击窗口的目的是激活应用程序。 如果一个窗口是可见的但不是拥有的(就像你的情况那样),那么当窗口被点击时,Windows不能激活该应用程序。 这是你所看到的(预期的)行为。

如果有什么特别的东西你想要完成,那么你仍然应该通过消息循环看到那个窗口的消息。 键盘消息只被发送到焦点窗口。 鼠标消息被发送到已捕获鼠标的窗口(如果有的话)或鼠标指针下的最上面的窗口(通过命中测试发现)是否具有焦点。 如果需要,可以将各种其他消息发送到窗口(例如绘画)。

如果你想让你的弹出式窗口获得焦点,那么它必须一个可以被激活的顶级父窗口。 通常的解决方案是创建一个不可见的顶层窗口(1像素或屏幕外)作为其父项。

发现一个有趣的解决方案,恰好也解决了我的其他问题(如果弹出窗口显示在全屏游戏上,单击它将导致任务栏出现) – 我使窗口透明( WS_EX_TRANSPARENT ),并通过系统控制来处理鼠标和键盘 -宽吊钩。 唯一的缺点是我必须让鼠标移动通过,因为阻塞它会导致光标停止(因此,我不能改变光标,因为我的弹出窗口后面的应用程序只会改变它)。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....