Mp3播放器(C写的)

#include<windows.h>
#include<mmsystem.h>
#include<digitalv.h>
#include<commctrl.h>
#include<stdio.h>
#include "resource.h"


int _GetFileName(TCHAR *FileName, HANDLE hwnd,char *lei)
{
 int i;
 int j;
 int len;
 char c[100]={0};
 char a[]="(*.)\0*.\0\0";
 OPENFILENAME  FileNames;
 static char  szFileName[MAX_PATH];
 static char  szTitleName [MAX_PATH] ;
    static TCHAR    szFilter[100] = {0};
 len = strlen(lei);
 c[0]=a[0];
 c[1]=a[1];
 c[2]=a[2];
 for(i=0;i<len;i++)
 {
  c[3+i]=lei[i];
 }
 c[3+i]=a[3];
 c[4+i]=a[4];
 c[5+i]=a[5];
 c[6+i]=a[6];
 for(j=0;j<len;j++)
 {
  c[7+i+j]=lei[j];
 }
 c[7+i+j]=a[7];
 c[8+i+j]=a[8];
 memcpy(szFilter, c,100);
    FileNames.lStructSize       = sizeof (OPENFILENAME) ;
          FileNames.hwndOwner         = hwnd ;
          FileNames.hInstance         = NULL ;
          FileNames.lpstrFilter       = szFilter ;
          FileNames.lpstrCustomFilter = NULL ;
          FileNames.nMaxCustFilter    = 0 ;
          FileNames.nFilterIndex      = 0 ;
          FileNames.lpstrFile         = szFileName ;
          FileNames.nMaxFile          = MAX_PATH ;
          FileNames.lpstrFileTitle    = szTitleName ;
          FileNames.nMaxFileTitle     = MAX_PATH ;
          FileNames.lpstrInitialDir   = NULL ;
          FileNames.lpstrTitle        = NULL ;
          FileNames.Flags             = 0 ;
          FileNames.nFileOffset       = 0 ;
          FileNames.nFileExtension    = 0 ;
          FileNames.lpstrDefExt       = NULL;
          FileNames.lCustData         = 0 ;
          FileNames.lpfnHook          = NULL ;
          FileNames.lpTemplateName    = NULL ;
 GetOpenFileName(&FileNames);
 for(i=0,j=0; szFileName[i]; i++,j++)
 {
  if(szFileName[i]=='\\')
  {
  FileName[j++] = szFileName[i];
  FileName[j]='\\';
  }
   else
   FileName[j]=szFileName[i];
  
 }
 FileName[j] = 0;
 return 0;
}

LONG CALLBACK
DlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 static char FileName[250];

 static MCI_PLAY_PARMS mciPlay;
 static MCI_OPEN_PARMS mciOpen;
 static MCI_DGV_SETAUDIO_PARMS mciSetAudioPara;

 memset(FileName, 0, sizeof(FileName) );
 switch(message)
 {
 case WM_CLOSE:
  EndDialog( hwnd, 0);
  return 0;

 case WM_INITDIALOG:
  return 0;     

 case WM_COMMAND:
  switch(LOWORD(wParam) )
  {
  case IDB_SCAN:
   _GetFileName(FileName, hwnd, "mp3");
   SetDlgItemText(hwnd, IDC_EDIT, FileName);
   SetFocus(GetDlgItem(hwnd, IDB_PLAY) );
   return 0;

  case IDB_PLAY:
    mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)&mciOpen);
    mciOpen.lpstrElementName=(char *)malloc(250*sizeof(char));
    GetDlgItemText(hwnd, IDC_EDIT, mciOpen.lpstrElementName, 250);
    mciSendCommand(mciOpen.wDeviceID, MCI_PLAY, /*MCI_WAIT*/MCI_NOTIFY, (DWORD)&mciPlay);
   return 0;
  default:return 0;
  }
  return 0;

 default:return 0;
 }
}

LONG WINAPI
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
 InitCommonControls();
 DialogBoxParam(hInstance, IDD_DIALOG1, NULL, DlgProc,NULL);
 return 0;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 编MP3播放器的步骤很复杂,但是用c语言实现它是可行的。首先,你需要安装一个MP3解码器,并将其链接到你的程序中。然后,需要使用c语言编程序,以解码MP3文件,并将其转换成可以在计算机上播放的格式。在此之后,你还需要使用c语言编一个用户界面,以便用户可以控制MP3播放器的功能,例如播放、暂停、调整音量等等。 ### 回答2: 要使用C语言编一个简单的MP3播放器,你需要理解MP3音频的解码和播放过程,以及如何使用C语言实现这些功能。 首先,你需要使用C语言读取MP3文件的二进制数据。你可以使用标准库函数,如fopen()和fread()来打开文件并读取数据。然后,你需要调用一个MP3解码库,例如mad或lame,将二进制数据解码成音频信号。 解码后的音频信号通常是以PCM (脉冲编码调制) 格式表示的。你可以创建一个缓冲区来存储解码后的音频数据,并使用音频库如ALSA或SDL来播放这些数据。 在播放过程中,你可以使用C语言编控制程序,实现暂停、停止、音量控制和跳到指定时间等功能。例如,你可以使用SDL的音频回调函数来处理PCM音频数据,并在需要时暂停或停止音频播放。 此外,你还可以编一个简单的用户界面,让用户可以选择和播放指定的MP3文件。你可以使用图形库如QT或GTK来创建UI,或者使用C语言编一个基于命令行的菜单界面。 编一个完整的MP3播放器是一个复杂的任务,上述只是一个简单的概述。你需要详细了解MP3音频编码和解码的原理,并对C语言的文件操作和音频处理有一定的了解。 ### 回答3: 用C语言编一个MP3播放器可以分为以下几个步骤: 1. 首先需要了解MP3文件的格式:MP3文件由多个帧组成,每个帧包含音频数据。在编播放器之前,需要能够解析MP3文件并提取音频数据。 2. 使用C语言的文件操作库,打开MP3文件。可以使用fopen函数以二进制模式打开文件。 3. 从MP3文件中读取帧数据。可以使用fread函数读取文件中的数据,并且解析其中的帧。 4. 解码音频数据。MP3文件中的音频数据是经过压缩的,需要进行解码才能播放。可以使用现有的第三方库,如libmp3lame或ffmpeg来实现解码功能。 5. 播放音频数据。将解码后的音频数据传递给音频设备进行播放。可以使用C语言的音频库,如ALSA或OpenAL来实现音频播放功能。 6. 实现控制功能。可以通过用户输入或者图形界面来控制播放器的播放、暂停、跳转等功能。可以使用C语言的图形库如GTK或QT来实现图形界面。 7. 实现播放列表功能。可以读取一个或多个MP3文件,将它们添加到播放列表中,并实现循环播放、随机播放等功能。 8. 清理和关闭。在程序结束前,需要关闭已打开的文件、释放动态分配的内存以及关闭音频设备。 需要注意的是,编一个完整的MP3播放器可能超过300字的限制,以上只是一个大致的步骤,并没有详细说明每个步骤的具体实现方法。编一个MP3播放器需要扎实的C语言基础,以及对音频编解码和音频设备操作的了解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值