抓屏的问题,请教高手了。谢谢

wubin_7841 2005-09-05 10:48:27
我想做一个实时检查屏幕变化的程序,所以要不断的抓屏检查。

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是空的。想不出倒底是为什么,

请教高手了,给我讲讲吧,谢谢了。。。。


...全文
140 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wubin_7841 2005-09-06
  • 打赏
  • 举报
回复
毛毛老大说的太好了,我忘释放HBITMAP了。
太不好意思了,居然忘记这个,还到这里来问。
本来这是一个函数,返回HBITMAP的,尖牛角里去了。呵呵。

谢谢楼上的各位高手

dirdirdir3 2005-09-05
  • 打赏
  • 举报
回复
第二次时hScrDC正不正确?
weiym 2005-09-05
  • 打赏
  • 举报
回复
printScreen
Ctrl+V
快乐鹦鹉 2005-09-05
  • 打赏
  • 举报
回复
hBitmap要释放阿
femalelover 2005-09-05
  • 打赏
  • 举报
回复
一般第一次运行无误的程序在以后的运行中报错或是与开始的执行结果不一样
很可能是你不经意间改变了你的程序,你可以仔细再检查一下程序的代码有什么变化.
之所以这么说,是因为我今天早上刚刚因为这种修改而重装了VC.
handsomerun 2005-09-05
  • 打赏
  • 举报
回复

是在最后
handsomerun 2005-09-05
  • 打赏
  • 举报
回复
DeleteDC(hMemDC);
之后,把
创建的图删除呢
DeleteObject(hBitmap)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧