ShowWindow() 立即SW_HIDE窗口,没有效果
ShowWindow() SW_HIDE window instantly, without effect
在我的C++应用程序中,我有以下代码:
ShowWindow(hDlg, SW_HIDE);
MakeScreenshot();
ShowWindow(hDlg, SW_SHOW);
这应该在没有当前应用程序窗口的情况下捕获屏幕的屏幕截图。但是有一个问题。SW_HIDE需要一些时间,因为我的 Windows 8.1 配置为使用动画效果。因此,隐藏窗口大约需要 400 毫秒,如果在此间隔内捕获屏幕截图(确实如此),它还将包含应用程序本身的窗口,我不喜欢。
有没有办法立即隐藏当前窗口,这样它就不会包含在创建屏幕截图函数中,该函数在它之后立即调用?如果没有,是否有其他首选方法可以截取Windows桌面的屏幕截图,而不是应用程序本身?在MakeScreenshot之前添加延迟并不是任何好的解决方案。谢谢。
您可以使用 MoveWindow(或 SetWindowsPos)将不需要的窗口移动到虚拟桌面的可见区域之外,然后将其移回。
您可能需要枚举监视器以查找超出所有监视器范围的坐标,这将需要一些工作。 据推测,您的屏幕截图代码正在计算要快照的坐标,因此您可以重复使用该计算来找到一个安全的地方来停放窗户。
什么对我有用:
this->ModifyStyleEx(0, WS_EX_LAYERED | WS_EX_TOPMOST); //just a backup
COLORREF c;
BYTE b;
DWORD flags;
this->GetLayeredWindowAttributes(&c, &b, &flags); //just a backup
this->SetLayeredWindowAttributes(0, 0, LWA_ALPHA);
//CODE TO TAKE A SCREENSHOT
this->SetLayeredWindowAttributes(c, b, flags); //just a restore
this->ModifyStyleEx(WS_EX_LAYERED | WS_EX_TOPMOST, 0); //just a restore
相关文章:
- unique_ptr:在分配之前调用 reset 有什么效果
- [longjmp/setjmp]c++ 相同的代码窗口有异常 Linux 没有错误并且运行良好
- 有没有办法像动画一样移动控制台窗口?
- 有没有办法一次运行 3 个创建窗口函数?
- 我在窗口中有一个fltk Fl_Choice下拉菜单,但只能通过鼠标使用
- ESP32_BLE_Arduino库中的扫描窗口、间隔和扫描时间之间有什么区别
- 如何在 direct2d 中使用随其窗口重新缩放的效果绘制图像
- 控制台窗口未在开发C++中打开?即使也有 getch() ?
- 有没有办法拿一个opencv显示窗口并将其保存到GUI窗口?
- 鼠标输入和键输入有什么区别(在前台获取窗口)
- 有没有办法知道父窗口的类型(基于框架或对话框)?
- 有没有办法为使用 Boost 生成的进程创建新的控制台窗口
- 破坏滤纸的“确定”、“取消”和“帮助”窗口的效果
- 控制台窗口有图标,但 OpenGL/GLUT 窗口没有。为什么?
- 试图关闭OpenCV窗口没有效果
- MFC -消息框显示,主窗口有一个取消按钮.消息框处于活动状态时防止取消
- 如何在Qt Creator 5.7中制作一个只有一个窗口的c++ GUI程序,但每次点击都会使窗口有其他元素-如设置向导
- 从ui-thread显示窗口有时会阻塞主ui-thread
- Mac的通知窗口.有或没有Qt
- Windows无边界OpenGL窗口有奇怪的选项卡问题