我想做一个实时检查屏幕变化的程序,所以要不断的抓屏检查。 HBITMAP hBitmap,hOldBitmap;
int i=1;
while(i)
{
HDC hScrDC,hMemDC;
int nWidth,nHeight; nWidth=rcWR.right-rcWR.left;
nHeight=rcWR.bottom-rcWR.top;
hScrDC=CreateDC("DISPLAY",NULL,NULL,NULL);
hMemDC=CreateCompatibleDC(hScrDC);
hBitmap=CreateCompatibleBitmap(hScrDC,nWidth,nHeight);
hOldBitmap=(HBITMAP)SelectObject(hMemDC,hBitmap);
BitBlt(hMemDC,0,0,nWidth,nHeight,hScrDC,rcWR.left,rcWR.top,SRCCOPY);
hBitmap=(HBITMAP)SelectObject(hMemDC,hOldBitmap);
DeleteDC(hScrDC);
DeleteDC(hMemDC);
if(bBitmap==NULL)
{
MessageBox("抓屏错误");
}
。其它代码。对得到的图像进行处理。
}程序执行后第一次检查无误,可循环到第二次就显示MessageBox“抓屏错误”,说明bBitmap是空的。想不出倒底是为什么,请教高手了,给我讲讲吧,谢谢了。
int i=1;
while(i)
{
HDC hScrDC,hMemDC;
int nWidth,nHeight; nWidth=rcWR.right-rcWR.left;
nHeight=rcWR.bottom-rcWR.top;
hScrDC=CreateDC("DISPLAY",NULL,NULL,NULL);
hMemDC=CreateCompatibleDC(hScrDC);
hBitmap=CreateCompatibleBitmap(hScrDC,nWidth,nHeight);
hOldBitmap=(HBITMAP)SelectObject(hMemDC,hBitmap);
BitBlt(hMemDC,0,0,nWidth,nHeight,hScrDC,rcWR.left,rcWR.top,SRCCOPY);
hBitmap=(HBITMAP)SelectObject(hMemDC,hOldBitmap);
DeleteDC(hScrDC);
DeleteDC(hMemDC);
if(bBitmap==NULL)
{
MessageBox("抓屏错误");
}
。其它代码。对得到的图像进行处理。
}程序执行后第一次检查无误,可循环到第二次就显示MessageBox“抓屏错误”,说明bBitmap是空的。想不出倒底是为什么,请教高手了,给我讲讲吧,谢谢了。
之后,把
创建的图删除呢
DeleteObject(hBitmap)
太不好意思了,居然忘记这个,还到这里来问。
本来这是一个函数,返回HBITMAP的,尖牛角里去了。呵呵。谢谢楼上的各位高手