c++ - 如果通过单击任务栏按钮最小化程序,SW_SHOWNOACTIVATE 不起作用

标签 c++ windows winapi

我的应用程序可以接收来自另一个应用程序的消息。如果应用程序被最小化,我想将其恢复到之前的状态而不将焦点放在它上。

我正在打电话

::ShowWindow(hWnd, SW_SHOWNOACTIVATE);

如果使用标题栏中的“最小化”按钮最小化应用程序,它会很好地工作,但如果通过单击 Windows 任务栏中的按钮最小化应用程序,则应用程序将获得焦点。

这可以修复或变通吗?

最佳答案

您可以在 ShowWindow 函数调用之前执行以下操作 HWND hwndForegroundWindow = GetForegroundWindow()。之后您可以使用 SetForegroundWindow(hwndForegroundWindow) 恢复前景窗口。这取决于你对焦点的含义,前景窗口和焦点是不同的(对于元素焦点,使用 GetFocusSetFocus)。

关于c++ - 如果通过单击任务栏按钮最小化程序,SW_SHOWNOACTIVATE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32013035/

相关文章:

c++ - 如何查询 boost::log 严重性?

c++ - 我如何从同意流程 (UAC) 获取流程路径或 pid

c - 如何在 Windows 中获取 PCI 区域大小?

windows - Windows HANDLE 在 64 位应用程序上的范围是多少?

c++ - MSVC11 错误中的 x64 位 asm

c++ - 错误 C2064 : term does not evaluate to a function taking 3 arguments

windows - 是否可以有一个批处理文件来编译和运行程序?

c++ - 对 nvcpl.dll 的 NvCplGetThermalSettings 调用返回 false (C++)

windows - 注册一个全局钩子(Hook),检测鼠标是否拖动文件/文本

c++ - OpenCV 中的相机标定和鸟瞰图投影