摘要:
缘由: 在改正俄罗斯方块程序的功能的时候,想给这个程序增加一个背景音乐。本想用PlayWave来做的,但想到这个功能十分常用,那还不如封装一个自己的CMusic类,以备不时之需。本来以为很容易的,可是在真正操作的时候,却出现了一个问题,就是无法准确的知道什么时候音乐播放完成。问题的难道就在于,怎样将类的成员函数作为窗口的回调函数。 原本用thunk来解决这个问题的,但是在解决的时候出现了一个问题,调试了好几天都没有解决。直到最近才解决。(也就是前一篇文章的由来)代码:(前面定义的宏主要是解决Unicode问题)cMusic.h 1 #ifndef CMUSIC_H 2 #define C... 阅读全文
摘要:
缘由:在给游戏做背景音乐类的时候,遇到了一个问题,需要用到MCI函数,但是MCI函数必须需要一个窗口来获得MCI执行的状态。特别在播放音乐完成的时候,MCI会向一个窗口发送播放完成消息。所以我需要创建一个窗口。窗口就肯定有窗口过程,而窗口过程是不能够为类成员函数的。但这个类中为了保证类的封装性,这个窗口过程函数又必须为类成员函数(因为需要访问很多变量)。因此,就想有没有办法让类成员函数也作为窗口类的回调函数呢?Thunk技术在网上查了些资料,发现thunk技术是可以实现这一点。下面是一些thunk技术的理解之所以能实现成员函数作为回调函数 是因为a,一般调用C++的成员函数之前,都是使用ECX 阅读全文