C语言实现音乐播放器-MCI mcisendString

C语言实现音乐播放器-MCI mcisendString,第1张

本次的实训的mp3播放器主要涉及到的内容如下:

MCI API :负责音乐的播放,暂停,继续,停止等功能

2)链表的构建

3)文件读取问题

文件存储有很多种方式,将数据写入文件时可以以空格或者回车为结束。

在读取时,不管是硬fscanf还是gets()进行读取,都要注意一点,以gets为例,gets是读到回车符号结尾,但是回车符号会被读取进去。也就是说,需要将读取到的字符串进行处理,最后一个字符要置为‘0’一定要注意这个问题。

还有一个_finddata这个结构体的问题:

此外由于在win10系统下不知道是我个人原因还是大部分人都有的的问题在编译时findnext会报错, 因为_findnext()返回类型为intptr_t而非long型,从“intptr_t”转换到“long”丢失了数据。只需要把一般写的:

long _findfirst( char *filespec, struct _finddata_t fileinfo );

返回值:

如果查找成功的话,将返回一个long型的唯一的查找用的句柄(就是一个唯一编号)。这个句柄将在_findnext函数中被使用。若失败,则返回-1。

参数:

filespec:标明文件的字符串,可支持通配符。比如: .c,则表示当前文件夹下的所有后缀为C的文件。

fileinfo :这里就是用来存放文件信息的结构体的指针。这个结构体必须在调用此函数前声明,不过不用初始化,只要分配了内存空间就可以了。

函数成功后,函数会把找到的文件的信息放入这个结构体中。

int _findnext( long handle, struct _finddata_t *fileinfo )

返回值:

若成功返回0,否则返回-1。

参数:

handle:即由_findfirst函数返回回来的句柄。

fileinfo:文件信息结构体的指针。找到文件后,函数将该文件信息放入此结构体中。

int _findclose( long handle )

返回值:成功返回0,失败返回-1。

参数: handle :_findfirst函数返回回来的句柄

一下为一个简化的版本主要是文件 *** 作:

function.h

function.c

main.c

一.在程序中直接播放声音文件\x0d\x0a在VC++ 中的多媒体动态连接库中提供了一组与音频设备有关的函数。利用这些函数可以方便地播放声音。最简单的播放声音方法就是直接调用VC++中提供的声音播放函数BOOL sndPlaySound ( LPCSTR lpszSound,UINT fuSound )或BOOL PlaySound( LPCSTR lpszSound, HMODULE hmod, DWORD fuSound )其中参数lpszSound是需要播放声音的.W***文件的路径和文件名, hmod在这里为NULL,fuSound是播放声音的标志,详细说明请参考VC++中的帮助。 例如播放C:soundmusic.wav可以用sndPlaySound ("c:\sound\music.wav",SND_ASYNC)或PlaySound("c:\sound\music.wav",NULL, SND_ASYNC|SND_NODEFAULT )如果没有找到music.wav文件,第一种格式将播放系统默认的声音,第二种格式不会播放系统默认的声音。\x0d\x0a\x0d\x0a二.将声音文件加入到程序中\x0d\x0a在VC++的程序设计中,可以利用各种标准的资源,如位图,菜单,对话框等。同时VC++也允许用户自定义资源,因此我们可以将声音文件作为用户自定义资源加入程序资源文件中,经过编译连接生成EXE文件,实现无.W***文件的声音播放。要实现作为资源的声音文件的播放,首先要在资源管理器中加入待播放的声音文件。\x0d\x0a具体步骤入下:\x0d\x0a1.获得包含资源的模块句柄:\x0d\x0aHMODULE hmod=AfxGetResourceHandle()\x0d\x0a2.检索资源块信息:\x0d\x0aHRSRC hSndResource=FindResource(hmod,MAKEINTRESOURCE(IDR_W***E1),_T("W***E"))\x0d\x0a3. 装载资源数据并加锁:\x0d\x0aHGLOBAL hGlobalMem=LoadResource(hmod,hSndResource)\x0d\x0aLPCTSTR lpMemSound=(LPCSTR)LockResource(hGlobalMem)\x0d\x0a4.播放声音文件:\x0d\x0asndPlaySound(lpMemSound,SND_MEMORY));\x0d\x0a5.释放资源句柄:\x0d\x0aFreeResource(hGlobalMem)

TC编译器太古老了。不知道靠它自己能不能播放。\x0d\x0a这里用 标准C语言 调 windows 的 播放器 来放 .wav .mp3 .avi 等等:\x0d\x0a#include \x0d\x0a\x0d\x0avoid play_wav(char *s){\x0d\x0achar cm[100]\x0d\x0asprintf(cm,"mplay32.exe /play %s",s)\x0d\x0asystem(cm)\x0d\x0a}\x0d\x0a\x0d\x0aint main (){\x0d\x0aplay_wav("d:\\zzz\\zzd.wav")//参数填你自己的音乐文件名就可以了。\x0d\x0areturn 0\x0d\x0a}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11487672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存