前言
这几天,想做一个图形化的音乐播放器来着,但是写着写着,各种思路交杂在一起反而让我难以实现功能。
于是就决定先不图形化,直接上控制台,把音乐播放器该有的基本功能全部实现出来先,于是便产生了这个即将要被我介绍音乐库。
注意:代码以文件上传,在文章末尾。
音乐播放器该有什么功能
1.开始播放,上一首,下一首,暂停,停止
2.进度调节,音量调节
3.以列表的形式存储一个或多个音乐
4.能够实现获取单个或多个音乐文件,甚至是一次获取某个音乐文件夹下的所有音乐
5.能自定义添加音乐列表和音乐,并且列表名字可更改
6.基本的查找音乐的功能
7.实现单曲循环,列表循环,顺序播放
8.能够让用户选择播放指定列表的指定音乐
恩,看起来很多,事实上单单是实现功能就花了我几天时间,然后成功的写出了一个拥有上述所有功能的音乐库。(只有一个需要让程序员操作=v=)
一般来讲,要做到自动连播需要程序员在程序代码中自己判断什么时候要自动连播,但这个音乐类不需要,它能够自己判断是否要进行自动连播!这是基于线程实现的。
好了,废话不多说,直接上该音乐库的核心类的声明:
class C_MUSIC_DO {
C_MUSIC_LIST *headp;
C_MUSIC_LIST *nowp;
int lists;//列表数目
int sound;//音量大小
bool sound_on;//是否静音 1静音 0没有静音
bool have_begined;//是否已经打开音乐可播放了?
bool have_started;//是否已经在播放中
enum MODE_NAME mode;//播放模式
bool close();//关闭音乐
C_MUSIC_LIST* get_head_list_p();//获得列表的头指针
C_MUSIC_LIST* get_now_list_p();//获得当前列表的指针
int get_files(//获得文件夹内音乐文件数量及名称
const LPCWSTR str,//输入搜索范围和条件
TCHAR *p[1000],//一个字符数组,用来获取多个文件名
int save_set//从数组的哪个元素开始存起
);
void get_line_from_mci(); //从MCI的返回中获取当前进度,并设置
int min_now;//当前播放的分钟
int sec_now;//当前播放的秒数
thread thread_var;//线程变量
friend void run(C_MUSIC_DO *p);//线程函数,专门管理当前的播放进度,实时反馈播放进度和实现自动连播
bool live=true;//音乐播放器活着吗?
bool have_creat_over=false;//初始化完成了吗?
bool should_run;//应该执行命令吗?
bool result;//命令执行结果

本文分享了一个基于Unicode编码和mci音乐函数的控制台音乐播放器类库,功能包括播放控制、进度音量调节、列表管理等,适用于希望自行开发音乐播放器界面的程序员。
最低0.47元/天 解锁文章
958

被折叠的 条评论
为什么被折叠?



