QQ截图模拟实现毕业设计范文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

优秀毕业设计(论文)申报表
学院名称软件学院
专业班软件工程项目管理05-2班
学生姓名
2009年 6 月 10 日
QQ截图模拟实现
软件学院软件工程专业 20052110010420 陈上勇
指导老师:刘海波
摘要
本软件采用C++语言在Visual C++ 6.0平台下开发。

开发过程严格按照软件开发流程进行。

从问题定义开始,经历可行性分析、需求分析、总体设计、详细设计、编码和单元测试、综合测试到最终的软件交付。

本软件主要模拟QQ截图功能。

除截取指定范围位图外,还增加了显示截取位图、保存位图到指定路径、打开指定路径位图、连续截图等必备功能和调用图片编辑软件、用户通行证及帮助文档三个功能点。

系统截图功能的实现是采用GDI方式来实现的,并将截取到的位图信息以位图句柄的形式保存下来。

位图的打开和保存也都是通过对位图句柄的操作来实现的。

系统的另外一个亮点就是对数据库的操作。

本系统对数据的操作,采用现今使用广泛的三层结构进行开发的。

系统将对数据库的操作封装到数据访问层中、将具体的操作的实现封装在业务逻辑层中、将用户的操作控制在表面层,这样,系统的安全性就大大提高了。

整个系统精简高效。

本软件可即学即用,是一个很好的抓图工具。

[关键字]截图;三层结构;Visual C++
ABSTRACT
The CatchScreen software is based on Visual C++ 6.0 platform,and developed with C++ language.
The System develop process is completely based on the software develop process.
The CatchScreen software is to implement the CatchScreen fuanction. Except for the function of CatchScreen,the software has provided OpenBitmap、SaveBitmap and calls the PictureEdit software、UserPermit、Help functions.
The function of this System is based of GDI, the result is return HBITMAP,and the OpenBitmap、SaveBitmap is implement by operate the HBITMAP.
The another lightspot of System is: Database.System operate Database is implement by three-layer.that mean System has encapsulation the operate of Data to the layer of Data-layer、encapsulation the operate of idiographic-function to logic-layer、encapsulation the operate of User- operate to UserInterface-layer.by this the System’ security has been raised to complete safe.
The System is simplify and highly active。

The Software that you can use it by one sight,is a very good CatchScreen tool.
[Keywords] CatchScreen; three-layer;Visual C++
1 绪论
本课题的意义
当今时代是飞速发展的信息时代,人们在对信息的处理中对图像的处理量与日俱增,这一点在文档人员上显得非常突出。

不管你是在QQ聊天还办公室里执行文档制作,都会时不时的要截取一张或两张甚至更多图片作为信息进行处理、进行编辑。

这样,这款精简高效的、即学即用的“所见即所得”抓屏软件就能够完全满足这方面客户的需求。

这款软件将给所有使用者带来方便。

问题定义
QQ截图模拟实现软件可以截取制定范围的位图、显示截取的位图、保存当前显示的位图到指定路径、开打指定路径的位图以及需提供对数据库的操作和辅助的帮助工具。

在截图的时候,你可以通过鼠标来控制截取图像的范围,如启动软件后你可以按住鼠标左键不放,通过拖动鼠标来选取截图的范围(也可以通过拉动橡皮边框来更改范围)然后双击鼠标左键来确定截取这个范围的位图。

当截图成功,截取到的位图就会自动显示在主界面上。

同时你可以通过主界面菜单来进行相关的操作。

2 开发技术及工具
GDI技术
图形设备接口(GDI,Graphics Device Interface)是一种支持在输出设备(如视频显示器、打印机和绘图仪)上的与设备无关的图形。

这种抓屏机制是以“桌面也是一个窗口,桌面也有一个窗口句柄(HWND)”这个只是点为基础的,如果我们得到了桌面的设备上下文(DC),就可以利用blit(复制)它的内容到我们创建的DC中。

具体的实现步骤为:
(1)通过GetDesktopWindow()函数得到桌面的窗口句柄
(2)用GetDC()取得桌面窗口的DC
(3)创建和屏幕DC兼容的位图和DC(CreateCompatibleBitmap ()和CreateCompatibleDC()),并把这个位图选进该DC(SelectObject())
(4)当你准备好抓屏时,就复制桌面窗口DC的内容到兼容DC,你就完成的抓屏过程,兼容位图中就是抓屏时刻的屏幕内容
(5)完成后别忘了释放你创建的对象,内存是宝贵的(对别的程序来说)
Visual C++是基于Windows的可视化开发环境,同时还提供了一些C++类库,其中最重要的是MFC。

随着技术的发展,MFC已不是Visual C++中唯一的最重要的类库了,其他的还有像ATL、STL等。

3 需求分析
本软件(QQ截图模拟实现软件)主要提供以下功能:
截取指定范围位图、显示截取的位图、保存位图、打开位图、连续截图、数据库操作、启动图像编辑软件以及用户手册。

截取指定位图:用户通过鼠标来选取范围,并提供相关信息和微操作。

显示截取的位图:将截取的位图显示到主界面上。

保存位图、打开位图:主要针对BMP格式的位图进行操作,并且路径由用户自己选取。

数据库操作:主要为用户提供通行证功能及限制非注册用户的相关功能服务。

启动图像编辑软件以及用户手册:通过C++代码来启动相关软件和帮助文档。

4 总体设计
系统的操作流程图
操作流程图是用一种直观的方式为开发人员提供系统的运作流程。

本系统的操作流程,如图4-1所示:
图4-1 QQ截图模拟实现之系统操作流程图
系统封装的类及作用
程序中要用到的主要类有:显示操作信息类(CMyEdit)、橡皮筋派生类(CTrack)、系统默认对话框类(CCatchScreenDlg)、主界面类(CMainDlg)、
注册通行证对话框类(CRegPermitDlg)、更改通行证对话框类(CRegisterDlg)、对数据库操作封装类(ADOConn)、数据库表类(CRegisterTb)。

各个类主要实现的功能描述如下:
CMyEdit:主要是用于显示用户截图时提供操作及相关提示信息。

CTrack:为用户提供选取范围的矩形边框
CCatchScreenDlg:在这个类中完成截取位图功能
CMainDlg:主界面。

CRegPermitDlg:注册通行证界面。

CRegisterDlg:更改通行证界面。

ADOConn:封装对数据库的操作,如连接数据库、打开数据库中的表等操作。

CRegisterTb:封装了用户对数据库注册信息表的操作。

5 详细设计
开发本软件,需要涉及几个重要的功能函数(下面函数被封装在各自所属的类中。

各函数的功能见注释,所带参数见函数后面的括号)如下:HBITMAP CopyScreenToBitmap(LPRECT lpRect,BOOL bSave)
//拷贝指定范围的位图信息
OnEraseBkgnd(CDC* pDC) //在这个窗口消息函数里面将全屏位图放置Z次序的最顶端
CCatchScreenDlg (CWnd* pParent /*=NULL*/) //在这个构造函
数中完成初始化和拷贝全屏操作
OnSave() /*按钮响应函数,用于保存当前显示的位图,仅提供为用户指定路径,保存需调用SaveBmp
函数来完成*/
OnOpen() /*按钮响应函数,用于打开指定路径的位图并
显示到主界面上,仅提供路径,打开位图需调
用ShowPicture函数来完成*/
SaveBmp(HBITMAP hBitmap, CString FileName) //保存位图实现函数
ShowPicture() //显示位图实现函数
OnLButtonDown(UINT nFlags, CPoint point) //响应鼠标左击事件函数
OnLButtonDblClk(UINT nFlags, CPoint point) //响应鼠标左键双击事件函数
OnLButtonUp(UINT nFlags, CPoint point) //响应鼠标左
键弹起事件函数
OnMouseMove(UINT nFlags, CPoint point) //响应鼠标移动事件函数
OnRButtonDown(UINT nFlags, CPoint point) //响应鼠标右击事件函数
GetRecordSet(_bstr_t bstrSQL) //获取记录集
ExecuteSQL(_bstr_t bstrSQL) //执行SQL语句InsertRecord() //插入一条记录
bool IsHaveName(CString Name) //判断数据库中是否已经右此用户名
以上列出的都是本软件系统内部用到的核心功能实现函数,其他的还有很多函数作为辅助功能函数,部分辅助功能函数代码如下:/**
*打开当前路径的帮助文档
*/
ShowWindow(SW_MINIMIZE);
char buf[MAX_PATH];
::GetCurrentDirectory(MAX_PATH,buf); //获取程序根目录路径
strcat(buf,"\\Help.chm");
::ShellExecute(NULL, "open", "HELP.CHM", "", "", SW_SHOW);
/**
*打开注册通行证对话框
*/
CRegPermitDlg m_RegPermitDlg; //创建注册通行证对话框对象m_RegPermitDlg.DoModal(); //调用DoModal()函数来创建一个模态注册通行证对话框
参考文献
[1]. Stanley B.Lippman.《C++ Primer》.人民邮电出版社,2000
[2]. 张维谷.《图象文件格式——windows编程》.清华大学出版社, 1999
[3].《图象文件格式大全》.学苑出版社,1994
[9] 陆宗骐.C/C++图像处理编程.北京:清华大学出版社,2006。

相关文档
最新文档