一次buge寻找过程

缘由:

最近在用VC6.0开发一个简单的扫雷程序;当中需要播放一段音乐,我就在网上找相应的

资料,发现了好多帖子,介绍最多的是这个方法。

把声音文件加入到资源中,然后从资源中播放声音。Visual C++支持WAVE型资源,用户在资源视图中单击鼠标右键并选择Import命令,然后在文件选择对话框中选择The Microsoft Sound.wav文件,则该文件就会被加入到WAVE资源中。假定声音资源的ID为IDR_STARTWIN,则下面的调用同样会输出启动声音:

PlaySound((LPCTSTR)IDR_STARTWIN, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);

那就这样干喽,我在程序里按照教程添加了一些代码(对了一定加上头文件并加紧相应的库,

#include <mmsystem.h>

#pragma comment( lib, "Winmm.lib" )

PlaySound(IDR_WAVE1, AfxGetInstanceHandle(), SND_RESOURCE |SND_ASYNC);

可是没用啊;系统老在提示PlaySound是未定义的。为此我还专门翻了加进来的.h文件,WTF,明明这个函数就在那里凭什么说未定义。

最后让舍友帮看,原来是要在调用PlaySound时传递的第一个参数强制转换成LPCTSTR,我靠这个时候看人家教程教程已经稳稳当当写好要强制转换的。擦!

其实当时最搞不清的是系统老提示未定义,最后想了想,可能系统认为我调用的函数真的未定义。归根到底,还是经验不足

时间: 2024-10-12 17:31:46

一次buge寻找过程的相关文章

JVM 性能调优实战之:一次系统性能瓶颈的寻找过程

玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈.性能优化分为好几个层次,比如系统层次.算法层次.代码层次...JVM 的性能优化被认为是底层优化,门槛较高,精通这种技能的人比较少.笔者呆过几家技术力量不算弱的公司,每个公司内部真正能够进行 JVM 性能调优的人寥寥无几.甚至没有.如是乎,能够有效通过 JVM 调优提升系统性能的人往往被人们冠以"大牛"."大师"之类的称呼.其实 JVM 本身给我们提供了很多强大而有效的监

MapReduce剖析笔记之五:Map与Reduce任务分配过程

在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体来说,存在一个抽象类:TaskScheduler,主要负责分配任务,继承该类的有几个类: CapacityTaskScheduler.FairScheduler.JobQueueTaskScheduler(LimitTasksPerJobTaskScheduler又继承于该类). 从名字大致可以看出

Python之路【第五篇】:面向对象编程

面向对象编程思维导向图 http://naotu.baidu.com/file/03516c91377d6cad0ded041aa4ce4433?token=ccaba09527261666 密码: Tim 面向:过程.函数.对象 面向过程:根据业务逻辑从上到下写垒代码! 面向过程的编程弊:每次调用的时候都的重写,代码特别长,代码重用性没有,每次增加新功能所有的代码都的修改!那有什么办法解决上面出现的弊端呢?函数就出现了. 面向函数:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可!

Python全栈之路系列----之-----面向对象4接口与抽象,多继承与多态)

接口类与抽像类 在python中,并没有接口类这种东西,即便不通过专门的模块定义接口,我们也应该有一些基本的概念 编程思想 归一化设计: 1.接口类 不实现具体的方法,并且可以多继承 2.抽象类 可以做一些基础实现,并且不推荐多继承 编程的几类原则: 开放封闭原则:对扩展示开放的,对修改是封闭的依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该应该依赖细节:细节应该依赖抽象.换言之,要针对接口编程,而不是针对实现编程接口隔离原则:使用多个专门的接口,而不使用单一的总接口.

python基础篇【第七篇】面向对象(上)

提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)和封装(Encapsulation) 定义一个类可以采用下面的方式来定义: class className: #定义函数用def 定义类也是一样需要class block 注意类名后面有个冒号,在block块里面就可以定义属性和方法了.当一个类定义完之后,就产生了一个类对象.类对象支持两种操作:引用和实例化.引用操作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实

Python学习第七天

类的静态方法 类方法及属性: 接着上节课的面向对象编程的继承和多态性: 经典类和新式类,从字面上可以看出一个老一个新,新的必然包含了更多的功能,也是之后推荐的写法,从写法上区分的话,如果 当前类或者父类继承了object类,那么该类便是新式类,否则便是经典类. 1 class D: 2 3 def bar(self): 4 print 'D.bar' 5 6 7 class C(D): 8 9 def bar(self): 10 print 'C.bar' 11 12 13 class B(D)

Java中的日志——Java.util.logging、log4j、commons-logging

Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging.其中log4j和commons-logging都是apache软件基金会的开源项目.这三种方式的区别如下: Java.util.logging,JDK标准库中的类,是JDK 1.4 版本之后添加的日志记录的功能包. log4j,最强大的记录日志的方式.可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等.

【转】Android源代码编译命令m/mm/mmm/make分析--不错

原文网址:http://blog.csdn.net/luoshengyang/article/details/19023609 在前文中,我们分析了Android编译环境的初始化过程.Android编译环境初始化完成后,我们就可以用m/mm/mmm/make命令编译源代码了.当然,这要求每一个模块都有一个Android.mk文件.Android.mk实际上是一个Makefile脚本,用来描述模块编译信息.Android编译系统通过整合Android.mk文件完成编译过程.本文就对Android源

你从前面右转的第二排架上就有啊——由”随便走“引发的用户体验思考

关于半岛铁盒的寻找,周董也是须要在"最后的一公里"问店里的小妹妹,才干真正找到那锈迹斑斑的半岛铁盒.而在O2O火爆的今天,谁才是我们身边那个能够咨询的前台小妹妹呢? 相信大家身边都有路痴,女友就是典型的一个.推荐过好用的地图导航app给她,即便功能多强大,对她来说,都一样:一张大地图上分不清上下左右东南西北.即便是地图中的定位点标明了当前的方向,她也不会去理会.仅仅会说:看不懂!这便是非常明显的用户思维.我仅仅是个用户,无论你功能多强大,还是一教就会使用,但是对不起,你带不给我新鲜,我