随笔分类 -  c/c++

c/c++语言特性和基础相关
摘要:缘由: 在改正俄罗斯方块程序的功能的时候,想给这个程序增加一个背景音乐。本想用PlayWave来做的,但想到这个功能十分常用,那还不如封装一个自己的CMusic类,以备不时之需。本来以为很容易的,可是在真正操作的时候,却出现了一个问题,就是无法准确的知道什么时候音乐播放完成。问题的难道就在于,怎样将类的成员函数作为窗口的回调函数。 原本用thunk来解决这个问题的,但是在解决的时候出现了一个问题,调试了好几天都没有解决。直到最近才解决。(也就是前一篇文章的由来)代码:(前面定义的宏主要是解决Unicode问题)cMusic.h 1 #ifndef CMUSIC_H 2 #define C... 阅读全文
posted @ 2013-02-27 23:19 张敏樱木花道 阅读(800) 评论(0) 推荐(0)
摘要:缘由:在给游戏做背景音乐类的时候,遇到了一个问题,需要用到MCI函数,但是MCI函数必须需要一个窗口来获得MCI执行的状态。特别在播放音乐完成的时候,MCI会向一个窗口发送播放完成消息。所以我需要创建一个窗口。窗口就肯定有窗口过程,而窗口过程是不能够为类成员函数的。但这个类中为了保证类的封装性,这个窗口过程函数又必须为类成员函数(因为需要访问很多变量)。因此,就想有没有办法让类成员函数也作为窗口类的回调函数呢?Thunk技术在网上查了些资料,发现thunk技术是可以实现这一点。下面是一些thunk技术的理解之所以能实现成员函数作为回调函数 是因为a,一般调用C++的成员函数之前,都是使用ECX 阅读全文
posted @ 2013-02-27 00:09 张敏樱木花道 阅读(2389) 评论(0) 推荐(0)
摘要:在看c++Primer的时候看到当中有一个很巧妙的提取一行中单词的方法,觉得很有感触,就将这段代码敲出来分享一下:/*程序的主要完成的功能是转换一段文字中的特殊单词为我们指定的单词比喻我们规定用 cuz 代表because 以后凡是遇到cuz的地方都用because进行替换*///主要的实现思路很简单 就是用map做一个键值对 将cuz 这种设置为key 将because设置为value 将要处理的文字存储在vector中 判断并进行替换//下面看实现代码:int main(int argc,char **){ map<string,string> trans_map; ... 阅读全文
posted @ 2012-10-25 00:03 张敏樱木花道 阅读(1040) 评论(0) 推荐(0)
摘要:本人在做贪吃蛇游戏的时候,想用一个线程来专门实现蛇的自动移动功能。在类的封装中,提供了一个autorun()的接口 ,和一个ThreadProc()函数。可是在编译的时候出现了下面的错误提示:error C3867: 'CSnake::ThreadProc': function call missing argument list; use '&CSnake::ThreadProc' to create a pointer to member。解决的方法是将ThreadProc()设置成静态成员函数。之所以要这么做,我本想在MSDN上找答案,可是没有找到 阅读全文
posted @ 2012-10-21 22:18 张敏樱木花道 阅读(482) 评论(0) 推荐(0)