spy++原理初探_vc

spy++原理初探_vc

ID:968758

大小:447.50 KB

页数:16页

时间:2017-10-22

spy++原理初探_vc_第1页
spy++原理初探_vc_第2页
spy++原理初探_vc_第3页
spy++原理初探_vc_第4页
spy++原理初探_vc_第5页
资源描述:

《spy++原理初探_vc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Spy++原理初探发布日期:2007-09-0211:30浏览次数:15001次操  作:下载源文件打印宋陈三·文章概要:·用VisualStudio搞开发的朋友对Spy++这个工具一定不陌生,它可以分析窗体结构、进程和窗口消息,对开发工作有很大辅助作用。我们需要研究某个对象时,只要调出其查找窗口,拖动探测器的指针到指定窗口/控件上释放即可。下面,笔者就和大家一起,用VC打造一个属于自己的Spy++。(http://www.vckbase.com/index.php/wv/1480)正文:打开VC集成开发环境,建立一个基于对话框的工程。我们把这个工程取名为SpyXX。在窗体中画上一个图片框

2、控件(Picture)、一个静态文本控件(Static)、两个复选框控件(CheckBox)和一个选项卡控件(TabControl)。界面设计如下图。探测器的制作需要两个图标文件(.ico)和一个鼠标光标文件(.cur),分别用于正常状态下的显示、鼠标拖出时的显示以及拖出时的鼠标指针;这些资源哪里来啊?Spy++中就有啊,用eXeScope挖一下吧。(我是从其他软件中挖出来的,名字好像叫超级什么霸,记不太清了,呵呵。)选项卡控件定义5个标签页,分别为"常规"、"样式"、"类"、"窗口"和"消息"。每个标签页的内容用一个属性页(PropertyPage)对话框来制作。下面,我们按照顺序描述一

3、下开发过程。一、探测器的制作探测器用一个图片框控件来显示,正常状态下显示一幅有靶的图标。当鼠标在上面按下时,显示内容立刻换为另一幅无靶的图标,同时鼠标指针变为靶状。这样,就给人一种靶心被拖出去的感觉了。通过上面的叙述,我们了解到图片框需要响应WM_LBUTTONDOWN消息和WM_LBUTTONUP消息。而图片框在正常状态下只响应鼠标单击消息BN_CLICK。所以,我们要通过子类化来响应上述两个消息。把图片框的ID设为IDC_PIC,并选中其Notify属性(否则不响应消息)。依次点击菜单Insert->NewClass,Classtype选择MFCClass,类名取为CMyPic,基类为

4、CStatic。添加CSpyXXDlg类的私有成员变量CMyPicm_pic,在对话框的初始化过程中将其与图片框关联。代码如下:1.BOOL CSpyXXDlg::OnInitDialog()2.{3.CDialog::OnInitDialog();4.m_pic.SubclassDlgItem(IDC_PIC,this);5.……6.return TRUE;7.}在CMyPic类中,我们就可以响应鼠标左键按下和弹起的消息了。按Ctrl+W打开ClassWizard,选择MessageMaps标签页,在Classname下拉列表中选择CMyPic。从Messages列表中分别增加WM_LB

5、UTTONDOWN和WM_LBUTTONUP消息,并接受其缺省函数名OnLButtonDown和OnLButtonUp。图标交换和鼠标光标交换的代码如下:01.void CMyPic::OnLButtonDown(UINT nFlags,CPointpoint)02.{03.//TODO:Addyourmessagehandlercodehereand/orcalldefault04.SetCapture();   //鼠标捕获05.HCURSOR hc=LoadCursor(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDC_CURSOR1));06

6、.//IDC_CURSOR1是靶形光标资源号07.::SetCursor(hc);08.HICON hicon2=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON2));09.//IDI_ICON2为无靶图标资源号10.this->SetIcon(hicon2);11.CStatic::OnLButtonDown(nFlags,point);12.}13.void CMyPic::OnLButtonUp(UINT nFlags,CPointpoint)14.{15.//TODO:Addyourmessagehandlerc

7、odehereand/orcalldefault16.ReleaseCapture(); //释放鼠标捕获17.HICON hicon1=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON1));18.//IDI_ICON1是有靶图标资源号19.this->SetIcon(hicon1);20.CStatic::OnLButtonUp(nFlags,poi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。