C语言实现音乐播放器的示例代码

 更新时间:2023年02月26日 10:30:47   作者:编程小鱼六六六  
这篇文章主要和大家分享了一个C语言的小DEMO,可以实现音乐播放器功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下

介绍

该程序是一个小的DEMO,实现了以下几个功能,可以借鉴学习。

功能1:鼠标选择互动功能。通过鼠标的移动和按下,按钮的颜色也会发生改变。

功能2:音乐的播放与暂停。通过按钮的操作,程序会做出相应的响应。如按下播放音乐1按钮。程序就会加载对应的音乐,其他按钮也是同理。具体的含义以及使用,可以查看代码。

实现代码

//
// 编译该范例前,请把 music.mp3 放在项目文件夹中
// 把 music.mp3 和编译的 exe 放在一起
// 编译环境:VC6~VC2019 + EasyX_20210115
//
#include <graphics.h>
#include <conio.h>
#include<string.h>
// 引用 Windows Multimedia API
#pragma comment(lib, "Winmm.lib")
 
void ZT();       // 暂停
void BF1();      // 播放1
void BF2();      // 播放2
void BF3();      // 播放3
void menu();    // 总得
void locate(int a, int b, int c, int d, int e, LPCTSTR text);
void locate(int a, int b, int c, int d, int e, LPCTSTR text, COLORREF color);
int Return();
 
int main()
{
  initgraph(640, 480);
 
  while (1)
  {
    int A=Return();    // 鼠标选择;
    switch (A)
    {
    case 0:ZT();break;
    case 1:BF1();break;
    case 2:BF2();break;
    case 3:BF3();break;
    }
  }
  closegraph();
  return 0;
}
 
void ZT()      // 暂停
{
  mciSendString(_T("stop mymusic"), NULL, 0, NULL);
  mciSendString(_T("close mymusic"), NULL, 0, NULL);
}
void BF1()      // 播放1
{
  mciSendString(_T("open 1.mp3 alias mymusic"), NULL, 0, NULL);
  // 播放音乐
  mciSendString(_T("play mymusic"), NULL, 0, NULL);
}
void BF2()      // 播放2
{
  mciSendString(_T("open 2.mp3 alias mymusic"), NULL, 0, NULL);
  // 播放音乐
  mciSendString(_T("play mymusic"), NULL, 0, NULL);
}
void BF3()      // 播放3
{
  mciSendString(_T("open 1.mp3 alias mymusic"), NULL, 0, NULL);
  // 播放音乐
  mciSendString(_T("play mymusic"), NULL, 0, NULL);
}
 
int Return()
{
  menu();
  MOUSEMSG m1;
  //BeginBatchDraw();
  while (1)
  {
    m1 = GetMouseMsg();
    switch (m1.uMsg)
    {
    case WM_MOUSEMOVE:
      menu();
      if (m1.x >= 220 && m1.x <= 420 && m1.y >= 100 && m1.y <= 130)
      {
        menu();
        locate(220, 100, 420, 130, 30, _T("暂停/结束"), RED);
        break;
      }
 
      if (m1.x >= 220 && m1.x <= 420 && m1.y >= 130 && m1.y <= 160)
      {
        menu();
        locate(220, 130, 420, 160, 30, _T("播放音乐1"), RED);
        break;
      }
 
      if (m1.x >= 220 && m1.x <= 420 && m1.y >= 160 && m1.y <= 190)
      {
        menu();
        locate(220, 160, 420, 190, 30, _T("播放音乐2"), RED);
      }
      if (m1.x >= 220 && m1.x <= 420 && m1.y >= 190 && m1.y <= 220)
      {
        menu();
        locate(220, 190, 420, 220, 30, _T("播放音乐3"), RED);
      }
      
    }
 
    if (m1.x >= 220 && m1.x <= 420 && m1.y >= 100 && m1.y <= 130)
    {
      locate(220, 100, 420, 130, 30, _T("暂停/结束"), RED);
      if (m1.uMsg == WM_LBUTTONDOWN)
      {
        return 0;
      }
    }
 
    if (m1.x >= 220 && m1.x <= 420 && m1.y >= 130 && m1.y <= 160)
    {
      if (m1.uMsg == WM_LBUTTONDOWN)
      {
        return 1;      // 
      }
    }
    if (m1.x >= 220 && m1.x <= 420 && m1.y >= 160 && m1.y <= 190)
    {
      if (m1.uMsg == WM_LBUTTONDOWN)
      {
        return 2;
      }
    }
    if (m1.x >= 220 && m1.x <= 420 && m1.y >= 190 && m1.y <= 220)
    {
      if (m1.uMsg == WM_LBUTTONDOWN)
      {
        return 3;
      }
    }
  }
 
}
 
void locate(int a, int b, int c, int d, int e, LPCTSTR text, COLORREF color)
{
  HCURSOR hcur = LoadCursor(NULL, IDC_CROSS);      // 加载系统预置的鼠标样式
  HWND hwnd = GetHWnd();                // 获取绘图窗口句柄
  SetClassLongPtr(hwnd, GCLP_HCURSOR, (long)hcur);  // 设置窗口类的鼠标样式
  setlinecolor(color);
  roundrect(a, b, c, d, e, e);
  settextcolor(color);
  settextstyle(20, 0, _T("黑体"));
  setbkmode(TRANSPARENT);
  char arr[50] = "按钮";
  RECT r = { a, b, c, d };
  drawtext(text, &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}
 
void locate(int a, int b, int c, int d, int e, LPCTSTR text)
{
  setlinecolor(WHITE);
  roundrect(a, b, c, d, e, e);
  settextcolor(YELLOW);
  settextstyle(20, 0, _T("黑体"));
  setbkmode(TRANSPARENT);
  char arr[50] = "按钮";
  RECT r = { a, b, c, d };
  drawtext(text, &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}
void menu()
{
  HCURSOR hcur = LoadCursor(NULL, IDC_ARROW);      // 加载系统预置的鼠标样式
  HWND hwnd = GetHWnd();                // 获取绘图窗口句柄
  SetClassLongPtr(hwnd, GCLP_HCURSOR, (long)hcur);  // 设置窗口类的鼠标样式
  locate(220, 100, 420, 130, 30, _T("暂停/结束"));
  locate(220, 130, 420, 160, 30, _T("播放音乐1"));
  locate(220, 160, 420, 190, 30, _T("播放音乐2"));
  locate(220, 190, 420, 220, 30, _T("播放音乐3"));
}

到此这篇关于C语言实现音乐播放器的示例代码的文章就介绍到这了,更多相关C语言音乐播放器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言编程中借助pthreads库进行多线程编程的示例

    C语言编程中借助pthreads库进行多线程编程的示例

    这篇文章主要介绍了C语言编程中借助pthreads库进行多线程编程的示例,文中的示例环境为Windows系统,需要的朋友可以参考下
    2015-11-11
  • QT 中文乱码解决汇总(QString与string、char*互转乱码)

    QT 中文乱码解决汇总(QString与string、char*互转乱码)

    在QT中使用中文时,经常会碰到论码问题,本文主要介绍了QT 中文乱码解决汇总(QString与string、char*互转乱码),需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • c++中容器之总结篇

    c++中容器之总结篇

    本文总结了C++的容器,其大致可以分为两个大类:顺序容器和关联容器,需要了解的朋友可以参考下
    2015-07-07
  • C++ deque容器的具体使用

    C++ deque容器的具体使用

    deque又称双端队列容器。deque容器中存储元素并不能保证所有元素都存储到连续的内存空间中,本文详细的介绍了C++ deque容器的使用,感兴趣的可以了解一下
    2021-05-05
  • 深入了解C++中常用的三个智能指针

    深入了解C++中常用的三个智能指针

    C++是一门强大的编程语言,但是在内存管理方面却存在着一些问题。手动管理内存不仅费时费力,而且容易出错。因此,C++中引入了智能指针这一概念,以更好地管理内存,下面就来详细讲讲C++中常用的三个智能指针吧
    2023-05-05
  • c语言常量定义规则知识点总结

    c语言常量定义规则知识点总结

    在本篇文章里小编给大家整理的是关于c语言常量定义规则知识点总结,需要的朋友们可以学习下。
    2020-03-03
  • C语言实例真题讲解数据结构中单向环形链表

    C语言实例真题讲解数据结构中单向环形链表

    链表可以说是一种最为基础的数据结构了,而单向链表更是基础中的基础。链表是由一组元素以特定的顺序组合或链接在一起的,不同元素之间在逻辑上相邻,但是在物理上并不一定相邻。在维护一组数据集合时,就可以使用链表,这一点和数组很相似
    2022-04-04
  • QT中删除信号于槽的连接的实现

    QT中删除信号于槽的连接的实现

    本文主要介绍了QT中删除信号于槽的连接的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C++ Boost Archive超详细讲解

    C++ Boost Archive超详细讲解

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-12-12
  • Qt QFtp客户端实现上传下载文件

    Qt QFtp客户端实现上传下载文件

    本文主要介绍了Qt QFtp客户端实现上传下载文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论