Windows GUI代码与Windows消息问题调试利器
Windows GUI代码与Windows消息问题调试利器
记得很久前有这么一种说法: 人类区别于动物的标准就是工具的使用。同样在软件开发这个行业里面,对于工具的使用也是高手和入门级选手的主要区别,
高手往往靠工具的使用在关键的时候打开局面,在适当的时候使用适当的工具就往往可以事半功倍。
首先让我们来讨论如下两个简单的问题。
1. 如果你写的一个软件出了一个问题,这个问题只有在关闭程序的时候出现,你怎么调试呢?
2. 如果你写的一个软件出了一个问题,这个问题只有在关闭机器的时候出现,你怎么调试呢?
3. 如果你写的一个软件出了一个问题,你怀疑可能是这个程序消息处理有问题,你怎么调试呢?
3. 如果你写的一个软件出了一个问题,你怀疑可能是这个程序的资源文件属性可能有问题,你怎么调试呢?
你不会真的想一次一次的去重启电脑来重现问题吧?呵呵..
对于这些问题我首先想介绍的是SPY++, 这个伴随Visual Studio多个版本的工具其实很多人并没有很好的利用,更有甚者竟然还造轮子,
不是说不可以造轮子,如果你因为不知道有这个东西去造轮子,我就要鄙视你了,呵呵,不要瞧不起Visual Studio自带的工具,他们往往可以干很多NB的事,只是你可能
还不太会用。
不多说了,下面上图,打开spy++ 将查找窗口的小圆圈拖拽到你感兴趣的小圆圈上面去,选择属性,你可以看到所有有关这个窗口的属性,选择消息,你就可以捕获到这个
窗口接收到的所有的消息,对于消息相关的问题,消息的追踪,资源属性问题的调试,说SPY++是神器,一点都不为过。
虽然SPY++对于消息的捕获称的上是神器,但是他有一个功能的缺失,他只能捕获消息,不能给窗口发消息,这对于很多问题的模拟和分析就很是不方便
于是有了下面一个我要介绍的工具: SendMessage, 是个open source的小工具,你可以从下面的链接下载:
http://sourceforge.net/projects/stefanstools/files/SendMessage/
SendMessage这个小工具的使用方法和SPY++特别像,所以说他们配合在一起使用也就是水到渠成的事,通过这个工具选择某个窗口,
你可以对这个窗口send message, post message, 直接选择不同时期的消息进行发送,包括关机前才会有系统发出的消息模拟。
小节
通过对这两个小工具的介绍,我相信开篇的几个问题读者已经有了答案,但是我还是想说的是,作为软件工程师,遇到问题千万不要蛮干,
对的时候使用对的工具太重要了,否则就算你加再多的班也是徒劳,希望对大家有所帮助,兄弟们加油!