简单截图软件的编写——心得总结
来源:互联网 发布:计算机三级有用吗 知乎 编辑:程序博客网 时间:2024/06/08 10:42
在公司不能用QQ,简单快捷的QQ截图就不能用了,面对工作中有时需要截屏记录的数据,时而感到烦躁不已。于是在某晚下定决心,自己编写一个截屏的小程序,以QQ截图为蓝本,打造山寨版QQ截图。
开发工具为:Visual Studio 2005
代码托管到了GitHub上:win32-screen-capture
语言用的是C++,此程序用纯Windows API编写。
一开始的想法就是要做成跟QQ截图差不多的玩意儿,所以在设计思路上参考了QQ的做法。首先QQ是通过点击按钮或触发快捷键来启动截图这个功能,在功能启动之后,会给屏幕“蒙”上一层深灰色的“膜”。随后通过鼠标左键的点击拖拽来确定截图区域,在确定截图区域之后就可以将该区域的图像截取并保存。
我的猜想是QQ在收到“启动截图”功能的消息时会创建一个新的窗口,此窗口为透明且永远在最前,这就是我们观感上那层灰色的“膜”。然后由此窗口来接受鼠标的划定区域消息,此区域通过在膜窗口中点击鼠标左键和拖拽创建矩形而确定。在划定区域后,所要做的事情就比较简单了,主要有两件:1. 将位图信息写入剪切板。2. 将截图区域保存为常见图像格式。
好了,到目前为止,我已经完成了对QQ截图设计思路的分析,接下来的一步就是要想办法实现了。
首先要解决的问题是如何创建“膜”窗口,此窗口为透明且无标题栏。
我在网上搜索了一下如何建立透明窗口的文章,得到了以下结果:
在使用以上代码创建正常窗口后,在WM_CREATE响应代码中插入以上函数,即可实现窗口的无标题透明化。其中SetLayeredWindowsAttributes函数的功能是调整窗口的透明度,trans_degree即为窗口透明程度。0x80000为WS_EX_LAYERED属性,在为窗口设置该属性后才能将其变为透明。
接下来问题就是要保存截下来的图片,用以下代码实现:
至此,这个小截图工具就能够基本实现了,如何通过鼠标消息获取矩形区域在这里不再赘述。最后完成的程序能够截图保存为.BMP格式,但是图像未写入剪切板,此功能尚待添加。并且QQ截图圈定区域后能显示出该区域原本的像素值,此功能在最后完成的程序中也未实现。
这个小程序虽然很简单,但还是能够Windows程序设计的一些基本元素均有体现,但是功能尚未完善,还是那句老话,学习无止境,编程无黎明!
- 简单截图软件的编写——心得总结
- 屏幕截图小软件的编写——WINDOWS API
- 简单的截图软件
- 最强悍的截图软件——傲游4截图
- 编写图形软件的一点心得
- 《编写可读代码的艺术》——简单总结
- python学习——截图工具编写
- 最近几年做软件项目的心得总结
- 最近几年做软件项目的心得总结
- 最近几年做软件项目的心得总结
- 最近几年做软件项目的心得总结
- 最近几年做软件项目的心得总结
- 用j2me编写palm软件的一点心得(一)
- 用j2me编写palm软件的一点心得(一)
- [Ubuntu]截图软件——Shutter
- 简单的屏幕截图
- 用MFC+GDI编写MapEdit的心得总结
- 总结别人的心得——
- 软件开发,了解了解
- 汇编语言 打印杨辉三角
- Qt环境下游戏杆编程
- 解决“载入外部新闻稿源时出错" 【转】
- 编程无巧 QQ 问问团队 打造一流团队 欢迎快来加入编程无巧团队哟!团队地址为:http://wenwen.soso.com/t/TeamHome.e?sp=565782
- 简单截图软件的编写——心得总结
- 计算n个数的最大共约数和最小公倍数
- oracle静态监听和动态监听辨析
- Oracle to_date的使用方法 日期格式参数 含义说明 Oracle to_date的使用方法
- 数据库对象的缓存策略
- 朝鲜出局有理由 对手强悍人皆知
- Eclipse中新建动态web项目
- 中国绝美情诗名句排行榜(
- SQL查询当前连接的活动(设置)的SET 选项