c++ - ShowWindow() 立即隐藏 SW_HIDE 窗口,没有效果

标签 c++ winapi

在我的 C++ 应用程序中,我有以下代码:

ShowWindow(hDlg, SW_HIDE);
MakeScreenshot();
ShowWindow(hDlg, SW_SHOW);

这应该捕获没有当前应用程序窗口的屏幕截图。但是有一个问题。 SW_HIDE 需要一些时间,因为我的 Windows 8.1 配置为使用动画效果。因此窗口的隐藏需要大约 400 毫秒,如果在此间隔期间捕获屏幕截图(确实如此),它还将包含应用程序本身的窗口,这是我不喜欢的。

有没有什么办法可以立即隐藏当前窗口,这样它就不会被包含在创建屏幕截图函数中,该函数紧随其后被调用?如果没有,除了应用程序本身之外,还有其他首选方法如何截取 Windows 桌面的屏幕截图吗?在 MakeScreenshot 之前添加延迟并不是什么好的解决方案。谢谢。

最佳答案

您可以使用 MoveWindow(或 SetWindowsPos)将不需要的窗口移到虚拟桌面的可见区域之外,然后再将其移回。

您可能需要枚举监视器以找到所有监视器都无法到达的坐标,这需要一些工作。据推测,您的屏幕截图代码正在计算快照的坐标,因此您可以重复使用该计算来找到一个安全的位置来停放 window 。

关于c++ - ShowWindow() 立即隐藏 SW_HIDE 窗口,没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35686742/

相关文章:

c++ - std::string 获取 (char *) 而不是 (const char *)

delphi - 如何调用 NtOpenFile?

c - WinAPI 多线程应用程序

c++ - 在 C++ 中使用 CreateProcess() 启动语音识别

windows - 更改组合框 RTL 样式时的镜像文本

java - 通过 JNA 将击键发送到隐藏窗口

c++ - 在 C++ 和 Linux 中通过超时写入和读取串口

C++ 是否可以使用类变量作为默认参数

java - 生成按单个数字之和排序的 n 位数字(无递归)

c++ - 如何使用箭头浏览QtVirtualKeyboard