VC编写音频播放器

合集下载

C语言下的MP3播放器

C语言下的MP3播放器

论文题目基于VC的MP3播放器设计与实现姓名学院学院专业计算机科学与技术指导教师讲师备注年月日基于VC的MP3播放器设计与实现作者姓名:指导教师:讲师单位名称:计算机科学与技术系专业名称:计算机科学与技术学校年月Design and Implementation of Mp3 PlayerBased on VCbySupervisor: Lecturer毕业设计(论文)任务书基于VC的MP3播放器设计与实现摘要本MP3播放器应用程序是一个基于Visual C++ 6.0 开发的一个多媒体软件,是建立在MCI(媒体控制接口)控制之上的软件。

该软件开发研究的目的主要是为了给人们娱乐和消遣用的;该软件实现的方法是通过调用MCI控制接口的相关函数,获取系统的控制信息,利用系统信息对MP3播放器的每一个动作进行控制。

现在为止,该软件到可以实现的功能是:该软件可以添加和播放多种音频文件格式,可以添加单个音频文件,也可以同时添加多个音频文件;对音频文件的操作有:播放音频文件、暂停、停止,可以选择播放下一首歌或前一首歌;可以对已经添加进入播放列表的音频文件进行删除或者添加新的音频文件;可以调节系统的音量的大小;该软件还可以显示当前播放的进度;可以隐藏或展开播放列表;本软件可以进行系统托管,隐藏主界面后,在任务栏创建托管图标;单击托管图标后可以重新弹出控制界面,并取消托管图标。

在系统托管或自动播放的情况下,该软件在播放完一首歌后可以自动跳转到下一首歌,并播放此音频文件。

关键词:媒体控制接口,多媒体,系统托管,控件,音频文件Design and Implementation of Mp3 PlayerBased on VCAbstractThe MP3 Player application programme is software that developed based on Visual C++ 6.0, and also is software that built on the control of MCI. The purpose of developing this software is for the entertainment and recreation of people. The way this software realized is transfer the correlation functions of MCI, and obtain the information of system control, using this information to control each movement of the MP3 Player.So far, the functions that software can realize are: The software can open and play different formats of audio-files,You can add the audio-file one by one or add many audio-files once; play the audio-files; pause; stop; play the following audio-file, and play the preceding audio-file. You can also delete the audio-files that the play list already have or add the new audio-file that the play-list does not exist. You can accommodate the volume of the system. The can show the progress that the current audio-file played. And can hide or outspread the play list. The software can trustee by the system, and will create a icon on the taskbar. When click the icon the interface will show again. While the current audio-file is playing over, it will jump to the next audio-file and play automatically.Key words: MCI,Media,System-Trustee,Controls,Audio-files目录毕业设计(论文)任务书 (I)摘要 (II)ABSTRACT......................................................................................... I II 第1章绪论 .. (1)1.1课题来源 (1)1.2课题描述 (1)1.3课题设计的思想 (1)1.4国内外的发展概况 (2)1.4.1 Winamp (2)1.4.2千千静听 (2)第2章用户需求分析 .................................... 错误!未定义书签。

vc音频播放器(含源文件)

vc音频播放器(含源文件)

课程设计说明书题目:音频播放器成绩:时间:年月日至年月日课程设计任务书题目音频播放器主要内容:音频播放器,是目前用户选择播放任意格式的音频文件的软件,如酷狗、QQ音乐等。

一般的音频播放器,都可以支持MP3、wave、AU、VOC等文件格式的播放。

在此次设计的音频播放其中,可以实现对音频文件的打开、播放、暂停、停止、上一曲/下一曲、歌词显示等操作。

对于播放器的界面,可以最小化,并显示到托盘。

处于最小化的状态下,依然可以对正在播放的文件进行上述操作。

在此播放器中,最具特点的是在各个操作按钮以及整个界面上添加了位图和能将窗口最小化。

播放器窗口的建立,也有区别与传统的有菜单显示的窗口。

最小化到托盘后,仍可以进行操作,也可以选择退出。

对于实现播放、停止、上一曲/下一曲、添加文件,都是利用CMidi这个类来存放实现这些功能的函数。

需要的时候调用就可以。

为了是界面更美观,让人看起来更舒服,加入了位图背景。

目前还没有实现用户根据自己的喜好来更改背景图案。

主要参考资料:[1]姬涛、周启生,《计算机程序设计基础(上册)》[Z],北京:中国传媒大学出版社,2010[2]谭浩强,《C程序设计教程》[Z],北京:清华大学出版社,2007[3]任哲,《MFC Windows应用程序设计(第二版)》[Z],北京:清华大学出版社,2007完成期限:指导教师签名:课程负责人签名:年月日摘要音频播放器,是目前用户选择播放任意格式的音频文件的软件,如酷狗、QQ音乐等。

一般的音频播放器,都可以支持MP3、wave、AU、VOC等文件格式的播放。

在此次设计的音频播放其中,可以实现对音频文件的打开、播放、暂停、停止、上一曲/下一曲、歌词显示等操作。

对于播放器的界面,可以最小化,并显示到托盘。

处于最小化的状态下,依然可以对正在播放的文件进行上述操作。

在此播放器中,最具特点的是在各个操作按钮以及整个界面上添加了位图和能将窗口最小化。

播放器窗口的建立,也有区别与传统的有菜单显示的窗口。

感-关于在VC环境下编写音乐播放器

感-关于在VC环境下编写音乐播放器

花了将近一周的时间,我的音乐播放器终于编的差不多了。

尽管仍旧存在着许多不足,但毕竟夹杂着自己太多的汗水和精力。

整整一周没日夜的查资料、和学友交流,让我明白了那些IT人士虽然表面辉煌,然而在他们的背后,是艰辛的付出和坚持,是对巅峰技术的追求和超越!或许,这就是那么多憧憬进入IT世界的人望而却步的主因吧,因为他们只看到了这个行业高得惊人的薪水,却无奈静不下心锻炼自身的技术!废话不多说,关于在VC下编写音乐播放器,我只想结合自己编写的精力和相关资料畅谈下自己的心得体会!1.WIN32 DiallogBased Application.VC支持WINDOWS底下应用编程,究其对话框工程应用,给广大的编程者提供了极大的便利。

这省去了编程者自己作图的繁琐过程,并且其中涉及的GDI技术之复杂,就不多说了。

2.windows API函数。

这个相信很多人都有听说过,但只有应用过那些函数的人才会体会到这些API功能的强大。

对于写播放器来说,就不得不说mciSendString()了,尽管windows API函数库中用于播放器编写的函数不乏少数,但当你能够用一个函数达到播、停(暂停)、继续以及将它应用在TimeProc()中所得到的便利是,你真的会由衷的感谢它!上面说的都是在VC下编写播放器的核心基础,当然还有许多基础得平凡到看到就不爽的在此掠去!下面说说我在编写音乐播放器过程中遇到的问题:1. 添加多个文件。

这个当时确实被卡了很久,当时觉得多个文件和一个的应该是差不多的,硬是将多个文件全部装到全局文件名szFile中,结果打开后可想而知。

后来查了很多资料,才发现用指针搜索的方式就变得相当方便了。

2.循环模式与时间的处理。

在写这个时,自己一开始就错了,总是把这两者分开着写,或者说一开始就没想到这两者是有联系的,并且在突然醒悟过来后,自己都觉得有多好笑,因为它们的联系太紧密了。

我后来是这样处理的:通过时间函数得到一首歌的总时间,通过回调函数得到一个歌的当前时间,当这两者相等时,也即一首歌结束,这个时候,才去判断循环模式!(这里补充一点:对于TimerProc()中的iSecond就算按照正常切正确的方式去写也同样会有错误,我就是在这个地方被卡了很久,明明程序没有错,却就是实现不了相应的功能,后来查SetTimer()是才发现,这个函数本身的精确度就不都,差不多有55s的误差,所以正常编写时,要实现放歌时间与总时间相等简直不可能,所以将iSecond+1即可。

VC++编写音频播放器

VC++编写音频播放器

Softeem Consultancy Service
程序界面
Softeem Consultancy Service
创建初始界面程序
实现界面美化
1,首先新建一个工程,取个好听的名字,这里命名为Multimedia,然 后选择Dialog based,点击OK完成。
2,设置对话框显示风格。在对话框点右键属性,设置边框为细小,把标题 栏复选框去掉,其他默认。如图:
Softeem Consultancy Service
其他常用命令: mciSendString(L"set cd time format tmsf", NULL,0,NULL); // 设置时 间格式为 // 轨(<100):分(<100):秒(<60):帧(<75),一秒=75块,一块=98帧 mciSendString(L"set cd door open", NULL, 0, NULL); // 打开光驱 mciSendString(L"set cd door closed", NULL, 0, NULL); // 关闭光驱 mciSendString(L"pause cd", NULL, 0, NULL); // 暂停播放 mciSendString(L"resume cd", NULL, 0, NULL); // 恢复播放 mciSendString(L"stop cd", NULL, 0, NULL); // 停止播放 mciSendString(L"close cd", NULL, 0, NULL); // 关闭CD设备 mciSendString(L"status cd length", buf, 256, NULL); // 获得整个CD 的音轨总长度 mciSendString(L"status cd length track 5", buf, 256, NULL); // 获得 第5个音轨的长度 mciSendString(L"status cd current track", buf, 256, NULL); // 获得 当前音轨号

在VC6.0下自制多媒体播放器

在VC6.0下自制多媒体播放器

在VC6.0下自制多媒体播放器作者:上海王凯明下载源代码在VC6.0下自制多媒体播放器作者:上海王凯明VC6.0可谓是微软的王牌产品,它以强大的功能而赢得了广大程序员的爱好。

而用VC的AppW izard、ClassW izard和其中的各种控件可以方便地建立应用程序。

本文就介绍用VC6.0自带的一个Activ eX控件----Activ eMov ieControl Object,来建立自己的多媒体播放器。

此多媒体具有一般的播放功能,能播放*.mp3,*.wma,*.mdi,*.wav,*.av i,*.dat等文件,还有Repeat功能。

具体步骤:1.打开VC6.0,在Projects下选择MFC AppW izard(ex e),并取名Med iaP lay er,然后建立基于对话框(Dialog Bas ed)的运用程序。

2.打开Resource View,选择其中的对话框,打开其中的主对话框,去掉对话框上的“确定”按钮,保留“取消”,将Caption改为“Ex it”。

然后再在上面加上九个按钮,ID和Caption分别为IDC_OPEN,Open;IDC_PLAY,Play;IDC_PAUSE,Pause;IDC_STOP,Stop;IDC_CLOSE,Close;IDC_LOWER,<<=;IDC_UPPER,=>>;IDC_FULLSCREEN,Full;IDC_REPEAT,Repeat;再加入两个静态文本控件,分别为IDC_STAT IC,Volume;IDC_STAT IC2,Status:Normal。

3.再打开Projects->Add to Project->Components and Controls->Reg istered Activ eX Controls对话框,选择其中的Activ eMov ieControl Object, Ins ert,OK之后,你会发现你的控件面板上多了一项Activ eMov ieControl Object,将它选中,直接放在你的对话框上就行了。

控制台C语言编写音乐播放器主要功能

控制台C语言编写音乐播放器主要功能

#include "FM_Main.h"#include"CTL.H"#include<stdio.h>#include<windows.h>#include<mmsystem.h>#include"GUI.h"#include"ERR_CheckEnter.h"#pragma comment(lib,"winmm.lib")#include "FM_CheckFile.c"#include"FM_Choose.c"#include"FM_List.c"#include "FM_Path.c"int Order=1; //初始时为第一首歌,随音乐切换而切换--nextsong() int NewOrder=0;int Amount = 0; //歌曲总量int begin; //自定义列表中开始序号int circulatemode=1; //循环模式int pp=0;int begintemp=0; //存储自定义列表边界int ww=-1; // 显示自定义列表当前播放信息int upordown=1; //判断切歌方向int firstup=0;int originvolume=500; //默认音量为500char v[40]="setaudio aa volume to 500"; //初始化音量void Init(){Order=1;NewOrder=0;Amount = 0;circulatemode=1;pp=0;begintemp=0;ww=-1;upordown=1;firstup=0;originvolume=500;}void ShowFileList(){if(begintemp==0)begintemp=begin;Amount = FM_CheckFile();begin = Amount;if(NewOrder==0){Show_GUI_EIGHT();FM_CheckFilePrint(0,Amount);}else{Show_GUI_EIGHT();FM_CheckFilePrint(Amount,begintemp);}};void ShowFileDetails(){int i=0;if(upordown==1){if(NewOrder!=0){Order=Amount+1+ww;ww++;}}if(upordown==2){if(firstup==0){if(NewOrder!=0){Order=Amount+1+ww;ww--;}firstup--;}else{if(NewOrder!=0){Order=Amount+1+ww;ww--;}}}firstup+=4;i=Order-1;printf(" 正在播放的音乐\n");printf("-------------------------------------------------------\n");printf(" 歌曲号歌曲名歌手名\n");printf("-------------------------------------------------------\n");printf(" %3d ",info[i].ID);printf(" %-20s ",info[i].song);printf(" %-10s\n",info[i].singer);printf("-------------------------------------------------------\n");}void Play(){if(NewOrder!=0)Order=Amount+1;char vol[10]="500";char v[40];char ch[200];sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);sprintf(v," setaudio aa volume to %s",vol);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa repeat",NULL,0,NULL);// getchar();}void Stop(){mciSendString ("pause aa",NULL,0,NULL);printf("歌曲播放已暂停,输入3继续播放,输入12退出\n\n");// getchar();}void Resume(){mciSendString ("resume aa",NULL,0,NULL);// getchar();}void FastForward(){int n=1;int m=0;int d=0;int minute;int second;char dd[60][20];char temp[20];do{printf("输入1快进:");scanf("%d",&n);mciSendString ("status aa position", dd[m], 20, 0); char ch[20];sprintf(ch,"%s",dd[m]);d=atoi(dd[m]);d+=5000;minute=(int)(((int)(d/1000))/60);second=(d/1000)-minute*60;itoa(d,dd[m],10);sprintf(temp,"seek aa to %s",dd[m]);mciSendString (temp,NULL,0,NULL);Play();m++;clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前时间:%d:%02d \n",minute,second);}while(n==1);}void FastBack(){int n=1;int m=0;int d=0;int minute;int second;char dd[60][20];char temp[20];do{printf("输入1快退");scanf("%d",&n);mciSendString ("status aa position", dd[m], 20, 0); char ch[20];sprintf(ch,"%s",dd[m]);d=atoi(dd[m]);d-=5000;minute=(int)(((int)(d/1000))/60);second=(d/1000)-minute*60;itoa(d,dd[m],10);sprintf(temp,"seek aa to %s",dd[m]);mciSendString (temp,NULL,0,NULL);Play();m++;clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前时间:%d:%02d \n",minute,second);}while(n==1);}void StopStop(){char temp[20];char ch[10];itoa(0,ch,10);sprintf(temp,"seek aa to %s",ch);mciSendString (temp,NULL,0,NULL);mciSendString ("pause aa",NULL,0,NULL);printf("点击1重新播放\n\n");}void VolumePlus(){int n=1;// int originvolume=500;char volume[10];char temp[40];while(n==1){printf("输入1增加音量,输入2退出音量增加模式 ");scanf("%d",&n);originvolume+=250;itoa(originvolume,volume,10);sprintf(temp," setaudio aa volume to %s",volume);mciSendString (temp,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);getchar();clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前音量:%d\n",originvolume);}originvolume-=250;}void VolumeReduce(){int n=1;// int originvolume=500;char volume[10];char temp[40];while(n==1){printf("输入1降低音量,输入2退出音量降低模式 ");scanf("%d",&n);originvolume-=250;itoa(originvolume,volume,10);sprintf(temp,"setaudio aa volume to %s",volume);mciSendString (temp,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前音量:%d\n",originvolume);}originvolume+=250;}void PreSong(){if(NewOrder==0){if(circulatemode==1){if(Order<1){Order=1;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order<1){Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}}else{Order=Amount+pp;if(circulatemode==1){if(Order<Amount){Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order<Amount){Order=begin;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}pp--;}upordown=2;}void NextSong(){if(NewOrder==0){if(circulatemode==1){if(Order>Amount){Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order>Amount)//////////////////////////////////////////////{Order=1;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}}else{Order=Amount+pp;if(circulatemode==1){if(Order<Amount)/////////////////////有问题{Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order<Amount)//有问题{Order=begin;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}pp++;}upordown=1;}void SelectCirculMode(){int i=0;Show_GUI_SEVEN();scanf("%d",&i);if(i==1)circulatemode=1;if(i==2)circulatemode=2;}void SaveExit(){/*char dd[20];char log[50]={"testlog!!!"};mciSendString ("status aa position", dd, 20, 0);int d;d=atoi(dd);FILE *fp = NULL;fp = fopen("D:\\SaveLog.txt","a");fwrite(log,1,50,fp);*/}void PlayOperation(){int d;re: clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("请选择要进行的操作:");epo:scanf("%d",&d);fflush(stdin);if(ERR_CheckEntero(d)){switch(d){case 1:Play();goto re;case 2:Stop();goto re;case 3:Resume();goto re;case 6:FastForward();goto re;case 8:FastBack();goto re;case 4:StopStop();goto re;case 9:VolumePlus();goto re;case 10:VolumeReduce();goto re;case 5:Order--;PreSong();goto re;case 7:Order++;NextSong();goto re;case 12:ChooseSong();goto re;case 11:SelectCirculMode();goto re;case 13:mciSendString("close aa", NULL, 0, NULL);return;case 14:SaveExit();// getchar();}}else{goto epo;}};void NewOperation(){ee: int i=0;printf("请选择要进行的操作:");scanf("%d",&i);fflush(stdin);switch(i){case 1:FM_CheckFilePrint(0,Amount);begin = FM_Choose(Amount,begin);break;case 2:begin = FM_Path(begin);break;case 3:break;default:printf("输入有误\n");goto ee;}};void ShowNewList(){FM_List(begin,Amount);NewOrder=Amount+1;PlayOperation();}void ChooseSong(){int id = 0;printf("请输入歌曲号:");scanf("%d",&id);if(id<1||id>Amount){printf("选择歌曲不存在!\n");}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[id-1].add);mciSendString(ch,NULL,0,NULL);mciSendString("play aa repeat",NULL,0,NULL);}}。

利用MCI在VC++环境下设计一个播放器

利用MCI在VC++环境下设计一个播放器

利用MCI在VC++环境下设计一个播放器一、实验目的通过动手制作基于Vc++的音乐播放器,了解播放器的原理。

并通过自己动手,在windows 播放器组件的基础上,用自己的算法,去实现自己的界面和自己的播放模式。

二、实验仪器或设备Pc机一台、 windows xp以上操作系统开发环境:Vc++6.0三、总体设计(设计原理、设计方案及流程等)1、设计原理:Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。

它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。

它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。

这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。

visual C++ 6.0集成了MFC6.0,于1998发行。

发行至今一直被广泛地用于大大小小的项目开发。

但是,这个版本在WindowsXP下运行会出现问题,尤其是在调试模式的情况下(例如:静态变量的值并不会显示)。

这个调试问题可以通过打一个叫“Visual C++ 6.0Processor Pack”的补丁来解决。

奇怪的是,这个网页强调用户也必须运行Windows 98、Windows NT4.0、或Windows 2000。

2、设计方案:通过Vc++6.0的可视化程序设计界面,运用基本对话框和按钮以及时间条进行界面设计,而后对各个按钮空间,以及时间条空间进行时间编码,依据自己的算法,实现自己的播放器。

VC课程设计--多媒体播放器

VC课程设计--多媒体播放器

课程设计课程名称可视化编程(VC)学院计算机科学与技术学院专业软件工程班级1202姓名指导教师2013——2014学年第2学期目录1.设计题目及要求 (3)2.基本功能描述 (4)3.软件设计模块 (6)3.1文件的打开模块 (6)3.2文件的播放模块 (9)3.3文件的停止模块 (9)3.4全屏模块 (9)3.5快进、快退模块 (9)3.6换皮肤模块 (10)3.7音量调节模块 (12)3.8窗口隐藏模块 (12)3.9文件暂停模块 (12)4.运行结果 (13)5.设计过程中遇到的问题和感想 (15)6.参考文献 (16)一、设计题目及要求1.1设计题目基于MFC的多媒体播放器系统1.2题目要求1.制作一个具有自己设计风格的媒体播放器。

2.要求能随机选取要播放的文件,实现前进,回退,暂停,循环播放,音量大小调节等基本功能。

3.要求能播放多种格式(至少四种或四种以上)的音频视频格式文件。

4.可以实现其它附加功能(不在要求范围之内)5.界面良好,功能完善二、基本功能描述本次课程设计制作的多媒体播放器是利用Windows系统自带的Windows Media Player控件,可以分别通过按钮和菜单实现*.mp3、*.mid、*.avi、*wav等媒体文件的打开、播放、暂停、全屏、音量调节、快进、快退、关闭、循环播放等功能。

还通过更换位图的方式,实现了换皮肤功能。

1.打开文件:通过选择文件类型打开不同类型的文件,如果打开的格式不对,消息框会提醒打开正确的格式的文件。

再打开文件前,其他按键不能进行操作。

2.播放文件:开始播放文件。

3.停止播放:停止播放文件。

4.全屏:将播放器变为全屏。

5.快退、快进:实现快退、快进功能。

6.换皮肤:选择沙漠、可爱棒冰、灯塔、郁金香可以为播放器换不同的背景。

7.音量调节:可以实现调大,调小音量的功能。

三、软件设计模块3.1文件的打开模式在WavePlayDlg.h中设定一个int型的全局m_MediaType,通过选择不同的按钮来给m_MediaType赋不同的值,不同的值代表不同的文件格式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Softeem Consultancy Servicsultancy Service
程序效果
音乐播放器可以播放Windows下常用的音频和视 频文件,如MP3、MIDI、WAV、WMA等。程序 的界面如图所示。用户可通过文件对话框添加想 要播放的文件和删除音乐文件,并可实现暂停、 关闭或重播的功能,并显示播放的时间和正在播 放文件的全路径和文件名,同时,在媒体文件播 放的过程中,用户可随时调节音,还可以设置播 放模式,如单曲循环,顺序播放等,同时,可以 同步歌词。
Softeem Consultancy Service
3,界面布局。在对话框中添加相应的控件,完成相应功能,最终效果如图:
Softeem Consultancy Service
4.进行对话框、控件的相应美化。 (1)给对话框添加背景 (2)给按钮添加位图 (3)使静态文本透明
实现播放音乐
Windows MCI与多媒体软件开发 Windows MCI(Media Control Interface)是控制多媒体设备的高层命令接口, 提供了与设备无关的控制多媒体设备的方法。MCI可控制的多媒体设备包括标准 的多媒体设备,如CD音频(CD Audio)、数字视频、动画、Wave格式数字声 音和MIDI音序器,以及影碟机等可选设备。MCI包含在Windows系统的 MMSYSTEM.DLL动态链接库中,用以协调多媒体事件和MCI设备驱动程序之间 的通信。一些MCI设备驱动程序,影碟机设备驱动程序,可以直接控制目标设备 ;另外一些MCI 设备驱动程序,如Wave和MIDI 设备驱动程序,通过 MMSYSTEM中的函数间接控制目标设备;还有一些MCI设备驱动程序则提供了 与其他Windows动态链接库的高层接口。MCI提供两种不同但相互联系的接口方 式。第一种方式利用消息和数据结构来给多媒体设备发送命令并接收设备传来的 信息,这种方法用函数mciSendCommand来给设备发送命令。其原型为:
Softeem Consultancy Service
为了使用MCI编程,必须包含多媒体头文件: #include <mmsystem.h> 并在项目属性中添加对多媒体库winmm.lib链接。
Softeem Consultancy Service
wchar_t buf[256]; MCIERROR err = mciSendString(L"open cdaudio alias cd", NULL, 0, NULL); // 打开CD if (err) { if (mciGetErrorString(err, buf, 256)) MessageBox(buf, L"Error"); // 获得并显示错误串 return; } mciSendString(L"status cd number of tracks", buf, 256, NULL); // 获得音轨总数 m_nTracks = wcstol(buf, NULL, 10); // 这里使用了宽字符版的 字符串到整数的 // 转换函数:long wcstol( const wchar_t *nptr, wchar_t **endptr, int base ); wsprintf(buf, L"play cd from %d to %d", m_nFrom, m_nTo); mciSendString(buf, NULL, 0, NULL); // 从音轨m_nFrom头播 放到音轨m_nTo–1尾
Softeem Consultancy Service
MCIERROR mciSendCommand ( MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD dwParam ); 参数IDDevice表示用来接收命令的设备的标识符,注意在打开设备时不用该参数 uMsg是要发送的命令;fdwCommand是命令消息的标志,而参数dwParam则是一 个指向包含命令消息的参数的结构。如该参数返回非0 值,则表示设备驱动出错, 这时可用mciGetErrorString函数来取得错误信息,其原型为: BOOL mciGetErrorString ( DWORD fdwError, LPTSTR lpszErrorText, UINT cchErrorText ); 参 数 fdwError 是由mciSendCommand 或mciSendString 返回的错误代码; 参数 lpszErrorText是一个指针,它指向用来存储错误描述信息的缓冲区;参数 cchErrorText表示缓冲区的长度,以字符为单位。
Softeem Consultancy Service
MCI接口的第二种方式是使用ASCII字符串来发送驱动设备的命令,这种 方式采用函 数mciSendString把命令字符发送给设备。其原型为: MCIERROR mciSendString ( LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, 第5 章媒体播放器——多媒体程序设计113 HANDLE hwndCallback ); 参数lpszCommand是要发送的MCI命令字符串;参数lpszReturnString是 一个指向接收返回信息的缓冲区的指针;cchReturn表示缓冲区的长度, 以字符为单位;hwndCallback是回调窗口的句柄,一般为NULL。 这 种 字 符 串 命 令 很 直 观 方 便 , 近 似 自 然 语 言 , 如 “ play cdaudio ” , “stop waveaudio”等。返回的信息字符串由 lpszReturnString带回,如该函数返回非0值,同样可用 mciGetErrorString获取错误信息。
Softeem Consultancy Service
程序界面
Softeem Consultancy Service
创建初始界面程序
实现界面美化
1,首先新建一个工程,取个好听的名字,这里命名为Multimedia,然 后选择Dialog based,点击OK完成。
2,设置对话框显示风格。在对话框点右键属性,设置边框为细小,把标题 栏复选框去掉,其他默认。如图:
相关文档
最新文档