¥1000 $$$ GetBitmapBits/Set… 这对函数,怎么用着没效果呢? 牛人来看看 $$$ ¥1000
HDC hScreendc,hDrawdc; hScreendc = ::GetDC(NULL); hDrawdc = CreateCompatibleDC(NULL); HDC hSefDC= GetDC()->m_hDC; int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); DWORD * pBits = new DWORD[cx*cy]; //*******上面的不用看,唯一需要说的一点就是,pBits指向一个 //保存屏幕截图的内存空间,屏幕是32位的,所以就用了DWORD HBITMAP hBitmap; hBitmap = CreateCompatibleBitmap(hScreendc,cx,cy); HGDIOBJ oldbmp = SelectObject(hDrawdc,hBitmap); BitBlt(hDrawdc,0,0,cx,cy,hScreendc,0,0,SRCCOPY); //上面这几句把屏幕截图保存到了Bitmap里,注意不是贴到客户区显示 GetBitmapBits(hBitmap,cx*cy*4, pBits); //取出这个位图的像素位,保存到pBits指向的内存空间里 //下面这几句建一个兼容dc,兼容Bitmap,但是这次不从屏幕抓图了, //而是从pBits读取像素位,添到Bitmap2里,然后贴到客户区显示 HDC hDrawdc2 = CreateCompatibleDC(NULL); HBITMAP hBitmap2 = CreateCompatibleBitmap(hScreendc, cx, cy); SetBitmapBits(hBitmap,cx*cy*4 ,reinterpret_cast<void *>(pBits)); HGDIOBJ oldbmp2 = SelectObject(hSefDC,hBitmap2); BitBlt(hSefDC,0,0, cx, cy,hDrawdc2,0,0,SRCCOPY); ……//DeleteDC什么的