当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 屏幕抓图程序的关键有两点:一是应该知道鼠标在屏幕上有准确位置;二是应该知道欲抓图的窗口句柄;三是如何对抓到的图片进行保存的问题。
 

 

 ·理解vc工程    »显示摘要«
    摘要:一、走进visual c++ visual c++作为一个功能非常强大的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一。microsoft的基本类库mfc使得开发windows应用程序比以往任何时候都要容易。本光盘教学软件的目的就是为了让你学会在visual c++环境下,利用微软的基本类库mfc开发出功能强大的windows应用程序。在本章节的内容当中,我们将向您介绍使用vc......
 ·进程退出前删除自身exe    »显示摘要«
    摘要:下面的代码由gary nebbett写就.gary nebbett乃是windows nt/2000 native api reference的作者.乃nt系统一等一的高手.下面就分析一些他的这段代码. 这段代码在process没有结束前就将启动process的exe文件删除了. int main(int argc, char *argv[]) { hmodule module = ge......


屏幕抓图程序DIY
【推荐阅读:深入理解Win32PE文件格式(1)

屏幕抓图程序的关键有两点:一是应该知道鼠标在屏幕上有准确位置;二是应该知道欲抓图的窗口句柄;三是如何对抓到的图片进行保存的问题.对于问题一,很简单,利用setcapture函数便能够追踪鼠标的移动(包括在屏幕抓图程序窗口之外的窗口).应该注意的是,setcapture的具体功能并不像msdn中所说的那样:调用setcapture一次直到使用releasecapture终止鼠标捕获前都会起到对鼠标的捕获作用,实际上,在使用过程中,你会发现,在进行了一次鼠标捕获之后,setcapture便失去了作用,这可能是setcapture函数的一个bug.所以,在编程时,最好能够不断地调用setcapture函数,以保证setcapture能够对鼠标进行正确无误的捕获.对于问题二,这时会用到一个平时我们不常用的函数:windowfrompoint,这个函数能够找出鼠标当前位置所对应的窗口句柄.具体用法可以参见msdn,这里不做详细叙述.同时,用过snagit有朋友都知道,在选择抓图窗口时,鼠标的在位置的窗口都会出现加粗的红色边框(如图一所示),以提醒目前所选择的窗口,这个功能实现起来有些复杂,下面仔细来看看详细说明.

在gdi中,最常见的一个概念就设备环境(dc),每一个窗口都相应的具有自己的dc.如果能够调用到窗口的dc,那么,我们便能够在窗口上的任何位置绘图.然而,在屏幕抓图程序中,由于用户所选择的窗口是不固定的,所以,要想得到鼠标所在处的窗口的dc,不是很容易.能不能够随心所欲地在屏幕上进行绘图但又不仅限于特定的窗口?可以,别忘了,getdc能够做到这点!getdc我们都用得太多了,都快习惯了getdc的函数申明:hdc getdc( hwnd hwnd),hwnd是dc对应的窗口句柄,当hwnd为空的,该函数返回的是整个屏幕的设备环境句柄!这就意味着我们可以在屏幕上进行任意绘图.在鼠标所在处的窗口进行绘图时,绘图本身的目只是为了提醒用户目前所选择的窗口,所以,在进行绘图时,必须得保证不会破坏窗口原有的画面.
...   下一页
 ·用vc++制作动画窗口的实例    »显示摘要«
    摘要:陈萌   俗话说“佛靠金装,人靠衣装”,一个好的软件如果能配上精美的界面一定会让更多的用户认同它。喜欢上网的朋友对netants(网络蚂蚁)这个软件一定不会陌生吧!它的下载速度、断点续传功能都给我们留下了深刻的印象,同时它的软件界面也是相当棒的。在netants的1.23版中,当下载任务完成或出错时,在主窗口的中央会以动画的方式展开一个窗口,报告当前下载的状况;当用户关闭窗口时,窗口又以收缩......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE