Chinaunix首页 | 论坛 | 博客
  • 博客访问: 457483
  • 博文数量: 42
  • 博客积分: 1325
  • 博客等级: 中尉
  • 技术积分: 1312
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-13 18:00
个人简介

呵~~~呵~~~

文章分类

全部博文(42)

文章存档

2016年(3)

2015年(1)

2014年(2)

2013年(2)

2012年(7)

2011年(11)

2010年(3)

2009年(13)

我的朋友

分类: WINDOWS

2009-07-16 11:41:19

抓取桌面,并在10,10坐标显示
 

void DisSrceen()
{
    int x = 10, y = 10;
    int BitWidth = GetSystemMetrics(SM_CXSCREEN);
    int BitHeight = GetSystemMetrics(SM_CYSCREEN);    
    
    //Define Variable
    HDC hdcmy,hbufferdc;
    HBITMAP hBit,hOldBitmap;
    
    //Create DesktopDC
    hdcmy = CreateDC("DISPLAY",NULL,NULL,NULL);
    hbufferdc = CreateCompatibleDC(hdcmy);
    
    //Create Hbitmap
    hBit = CreateCompatibleBitmap(hdcmy, BitWidth, BitHeight);
    
    //Get bit to Buffer
    hOldBitmap = (HBITMAP)SelectObject(hbufferdc, hBit);
    StretchBlt(hbufferdc, 0, 0, BitWidth, BitHeight, hdcmy, 0, 0, BitWidth, BitHeight, SRCCOPY);
    
    //Get finally bit
    hBit = (HBITMAP)SelectObject(hbufferdc, hOldBitmap);
    
    //Release Memory
    DeleteObject(hOldBitmap);
    ReleaseDC(NULL,hdcmy);
    ReleaseDC(NULL,hbufferdc);
        
    HBITMAP hbitmap = hBit;
    
    //get desktop dc
    CDC *dc = CDC::FromHandle(::GetWindowDC(::GetDesktopWindow()));
    CDC dcMemory;
    dcMemory.CreateCompatibleDC(dc);
    
    CBitmap *bitmap = new CBitmap();
    
    if(hbitmap)
    {
        bitmap->Attach(hbitmap);
    }
    else
    {
        AfxMessageBox("ERROR: hbitmap is NULL.");
        goto END;        
    }
    
    long bmWidth,bmHeight;
    BITMAP bm;
    bitmap->GetBitmap(&bm);
    bmWidth=bm.bmWidth;
    bmHeight=bm.bmHeight;
    dcMemory.SelectObject(bitmap);
    dc->BitBlt( 100, 100, bmWidth, bmHeight, &dcMemory, 0, 0, SRCCOPY);
    
END:
    dc->Detach();
    dcMemory.Detach();
    bitmap->Detach();
}

阅读(1864) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~