网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC++抓取屏幕图像及光标的程序分析
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
alidate();
}
第五步:在窗口重画函数OnDraw中将m_hdcCompatible中的图像拷贝到CgrabScreenView的设备描述表上,从而在该窗口中抓取的屏幕及光标区域。
void CGrabScreenView::OnDraw(CDC* pDC)
{
CGrabScreenDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//在视图窗口显示全屏幕窗口图像及光标区域
SelectObject(pDC->m_hDC,m_hbmScreen);
BitBlt(pDC->m_hDC,0,0,GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CXSCREEN),m_hdcCompatible,0,0,SRCCOPY);
}
实验心得与体会:
1. 256色及更低色位图由三部分组成。一是位图信息头,定义了位图的大小等信息。二是颜色表,定义了各象素点值对应的红、绿、蓝三色分量。三是位图的象素数据块,包含位图中的每个象素点的数据,它们与位图信息头中的颜色表一起决定了象素的最终显示颜色。对于大于256色的位图,通常由两区域组成,即位图信息头和象素数据块,象素数据块中的每个象素点的数据包含了红、绿、蓝三色分量,具体细节,请参看相关的专业书籍。
2. 每个设备描述表中都包含有一个位图,CreateCompatibleDC返回的兼容设备描述表所包含的位图大小仅为一个象素,并且是单色图像。
3. CreateCompatibleBitmap返回的位图对象只包含相应设备表述表中的位图的位图信息头,不包含颜色表和象素数据块。因此,选入该位图对象的设备描述表不能象选入普通位图对象的设备描述表一样应用,必须在SelectObject函数之后,调用BitBlt将原始设备描述表的颜色表及象素数据块拷贝到兼容设备描述表。
4. 在获取光标图像的程序代码中,GetCursorPos所取回的坐标点是光标的中间点的位置,而DrawIconEx函数所要求的坐标值为光标的左上角坐标,因此,要调用GetIconInfo对坐标点进行转换。
5. 在OnDraw函数的实现代码中,我在BitBlt函数之前调用了SelectObject将屏幕的兼容位图选入CgrabScreenView窗口的设备描述表,有人告诉我,说不用SelectObject这一步,也是一样的效果。我问,如果,你要将一台计算机上的屏幕传送到网上的另外一台计算机上显示,效果还是一样吗?结果是不尽相同的。重要的一点是,BitBlt函数只拷贝颜色表及象素数据块,而不含位图信息头。只是,本例中的CgrabScreenView窗口的设备描述表中所包含的位图对象的位图信息头与m_hbmScreen中的一样,所以,有了以上疑问。

  • 下一篇资讯: 破解所有版本Access密码
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号