
主要在于你获得的HDC是哪个。
首先你要获取你要截图窗口的HWND
通过GetWindowDC 或 GetDC 获取相应的 HDC
得到HBITMAP,其实你给出的程序已经完成了这步,只不过他用的HDC是屏幕的。
也就是说,你要在你的程序里想办法获得你要截图的窗口的HDC。
然后你程序里的 hSrcDC这个变量赋上这个要截图的HDC。
而窗口HDC可以通过第二步里的GetWindowDC 或 GetDC 获得,
调用这个函数需要窗口句柄,也就是窗口的HWND。
你这程序里
HWND hw = getHandle(1);
这一句想办法让 getHandle函数返回要截图窗口的HWND。
使用CFbsBitmap类的Handle()和Duplicate方法,我们可以容易的复制一个位图对象。复制的对象指向和源相同的位图对象,但是可以被单独的从原始对象删除。
这是因为实际上CFbsBitmap是字体位图服务器所管理的一个位图句柄。被管理的位图对象是被引用计数的。
只有当引用计数达到0时才被删除。所以当位图的句柄被复制时,结果是CFbsBitmap对象指向相同的位图,仅仅是引用计数增长了。
以上就是关于c++怎么截屏啊,得到整个屏幕的HBitmap全部的内容,包括:c++怎么截屏啊,得到整个屏幕的HBitmap、如何复制一个位图句柄、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)