窗口的屏幕截图
我一直在编写一些代码来执行窗口的屏幕抓取(在 Windows 中)。该代码工作正常,但是在屏幕抓取之前,我必须将窗口带到我想要捕获并强制重绘的前面。
我使用 InvalidateRect 强制重绘,然后必须从消息循环中抽取一些消息,以便处理 WM_PAINT。这显然有点蹩脚,因为我不知道要发送多少消息。
我尝试将 RedrawWindow 与 RDW_ALLCHILDREN 一起使用,但是我从中抓取屏幕的应用程序是一个 MDI 应用程序,并且似乎不会重绘它的所有子项。
所以我的问题是,有没有更好的方法在屏幕抓取之前重绘窗口?
干杯 富有的
I've been writing some code to do a screen grab of a window (in Windows). The code works fine, however prior to the screen grab I have to bring the window to the front that I want to capture and force a redraw.
I force the redraw with InvalidateRect, I then have to pump some messages from the message loop in order for the WM_PAINT to get processed. This is obviously a bit lame, as i don't know how many messages to pump.
I tried using RedrawWindow with RDW_ALLCHILDREN, however the app I am grabbing a screen from is an MDI app and doesn't seem to redraw all of it's children.
So my question is, is there a better way to redraw the window prior to the screen grab?
Cheers
Rich
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于您没有提到您使用的语言,我希望以下 C++ 代码对您有所帮助!
您实际上不需要强制重绘..但是如果窗口最小化,您可能需要在使用窗口句柄调用函数之前将其调出..! texWidth 和 texHeight 是您要捕获的窗口的尺寸;要获得此信息,您可以使用 GetWindowRect(..) 或查看此处的链接: 链接
Since you have not mentioned the language you are using, I hope the following code in C++ helps you!
You dont actually need to force a redraw.. But in case the window is minimised, you might need to bring it up, before you call the function with the window handle..! texWidth and texHeight are dimension of the window you are about to capture; to get this you can use, GetWindowRect(..) or check out the link here: link