求PrintWindow源代码或原理、替代代码,200分送上!

bailee 2013-06-18 06:41:22
如题。

在用PrintWindow后台抓图时,主要是碰到了两个问题:
1、有些Flash抓出的图是黑屏,但PrintWindow返回是抓图成功的;
2、PrintWindow每次都抓整个目标窗口的图,个人觉得性能有待提高,想做一个可以抓区域图的函数;


PS:俺现在一帖最多只能给100分,如果有大侠解决此问题,另开贴给分,谢!

帮顶的也给分,嘿嘿!
...全文
274 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bailee 2013-06-19
  • 打赏
  • 举报
回复
引用 1 楼 VisualEleven 的回复:
http://bbs.csdn.net/topics/380255549
首先谢谢版主,看到你的头像就感觉到温馨。 上面的帖子,早前已看过,但不太明白,帖子中提出的一些函数,百度不到,更无法实践。帖子中的精华如下,大家也可一并分析(来自:Lactoferrin): PrintWindow和WM_PRINT不同,WM_PRINT是合作式的,需要目标窗口的窗口过程实现对WM_PRINTCLIENT的响应 PrintWindow却不需要,只需要对方能响应WM_PAINT,它的大致过程如下 PrintWindow(NtUserPrintWindow)->xxxPrintWindow->(SetRedirectedWindow->CreateRedirectionBitmap)->xxxUpdateWindow->_GetDCEx->NtGdiBitBlt xxxPrintWindow首先调用SetRedirectedWindow创建一个重定向位图(CreateRedirectionBitmap),将该窗口的绘制重定向到这个位图并做初始化、格式转换工作,而不是通常情况下的主帧缓冲(如果是开了桌面组合则是dwm里面的离屏表面) 接下来调用xxxUpdateWindow,向目标发送WM_PAINT,此时窗口过程像窗口dc绘制将被重定位到重定向位图,因此dc不会由于被遮挡而被剪裁,不再依赖窗口的位置,内容可以全部保留在重定向位图 最后调用_GetDCEx->NtGdiBitBlt将目标窗口的dc的内容bitblt到你提供的dc
dvlinker 2013-06-18
  • 打赏
  • 举报
回复
我们这边使用printwindow来抓取某个应用程序的图像偶尔也会黑屏,导致应用程序共享的功能有些问题
Eleven 2013-06-18
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/380255549

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧