关于PrintWindow

BOOL PrintWindow(
  HWND hwnd,               
//  Window to copy
  HDC  hdcBlt,              //  HDC to print into
  UINT nFlags               //  Optional flags
);

把指定的可视化窗口拷贝到指定的DC。我的测试方法:
目标窗口A,当前窗口B,在B程序中调用PrintWindow取得A的图象显示在B的客户区域

特性总结:
[1] 经测试适用于GDI、D3D
[2] 调用一次PrintWindow,之后的MemoryDC中的位图会随着屏幕中窗体A所在区域的变化而变化
     感觉就像是MemoryDC跟目标窗口A所在区域的物理显存绑定。
[3] 可以用于屏幕录象,截图工具

MSDN中的示例代码如下:

    HDC hdc  =  GetWindowDC(hwnd);
    
if  (hdc)
    {
        HDC hdcMem 
=  CreateCompatibleDC(hdc);
        
if  (hdcMem)
        {
            RECT rc;
            GetWindowRect(hwnd, 
& rc);

            HBITMAP hbitmap 
=  CreateCompatibleBitmap(hdc, RECTWIDTH(rc), RECTHEIGHT(rc));
            
if  (hbitmap)
            {
                SelectObject(hdcMem, hbitmap);
                PrintWindow(hwnd, hdcMem, 
0 );
                DeleteObject(hbitmap);
            }
            DeleteObject(hdcMem);
        }
        ReleaseDC(hwnd, hdc);
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值