欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)音樂播放器的示例代碼

 更新時間:2023年02月26日 10:30:47   作者:編程小魚六六六  
這篇文章主要和大家分享了一個C語言的小DEMO,可以實現(xiàn)音樂播放器功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下

介紹

該程序是一個小的DEMO,實現(xiàn)了以下幾個功能,可以借鑒學(xué)習(xí)。

功能1:鼠標(biāo)選擇互動功能。通過鼠標(biāo)的移動和按下,按鈕的顏色也會發(fā)生改變。

功能2:音樂的播放與暫停。通過按鈕的操作,程序會做出相應(yīng)的響應(yīng)。如按下播放音樂1按鈕。程序就會加載對應(yīng)的音樂,其他按鈕也是同理。具體的含義以及使用,可以查看代碼。

實現(xiàn)代碼

//
// 編譯該范例前,請把 music.mp3 放在項目文件夾中
// 把 music.mp3 和編譯的 exe 放在一起
// 編譯環(huán)境: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();    // 鼠標(biāo)選擇;
    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("暫停/結(jié)束"), 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("暫停/結(jié)束"), 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);      // 加載系統(tǒng)預(yù)置的鼠標(biāo)樣式
  HWND hwnd = GetHWnd();                // 獲取繪圖窗口句柄
  SetClassLongPtr(hwnd, GCLP_HCURSOR, (long)hcur);  // 設(shè)置窗口類的鼠標(biāo)樣式
  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);      // 加載系統(tǒng)預(yù)置的鼠標(biāo)樣式
  HWND hwnd = GetHWnd();                // 獲取繪圖窗口句柄
  SetClassLongPtr(hwnd, GCLP_HCURSOR, (long)hcur);  // 設(shè)置窗口類的鼠標(biāo)樣式
  locate(220, 100, 420, 130, 30, _T("暫停/結(jié)束"));
  locate(220, 130, 420, 160, 30, _T("播放音樂1"));
  locate(220, 160, 420, 190, 30, _T("播放音樂2"));
  locate(220, 190, 420, 220, 30, _T("播放音樂3"));
}

到此這篇關(guān)于C語言實現(xiàn)音樂播放器的示例代碼的文章就介紹到這了,更多相關(guān)C語言音樂播放器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解c++中的異常

    詳解c++中的異常

    程序在運行過程中,有對也就有錯,正確那么就不用說了,但是如果錯誤,那么我們?nèi)绾慰焖俚亩ㄎ坏藉e誤的位置,以及知道發(fā)生了什么錯誤。當(dāng)一個函數(shù)發(fā)現(xiàn)自己無法處理的異常,就會拋出一個異常,讓函數(shù)調(diào)用者直接或者間接的處理這個錯誤。本文將詳解介紹c++中的異常
    2021-06-06
  • Qt實現(xiàn)自定義矩陣布局

    Qt實現(xiàn)自定義矩陣布局

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)自定義矩陣布局,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • VScode platformio使用的詳細步驟

    VScode platformio使用的詳細步驟

    使用VSCode作為編輯器,同時借助PlatformIO插件,可以幫助開發(fā)者更加高效地進行嵌入式開發(fā),本文主要介紹了VScode platformio使用的詳細步驟,感興趣的可以了解一下
    2023-10-10
  • 詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義

    詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義

    下面小編就為大家分享一篇詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義,具有非常好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • C++調(diào)用Go方法的字符串傳遞問題及解決方案

    C++調(diào)用Go方法的字符串傳遞問題及解決方案

    這篇文章主要介紹了C++調(diào)用Go方法的字符串傳遞問題及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 探究一下C語言生成隨機數(shù)的奧秘

    探究一下C語言生成隨機數(shù)的奧秘

    C語言中生成隨機數(shù)是一項非常重要的功能,因為許多現(xiàn)代應(yīng)用程序需要使用隨機數(shù)。本文就來帶大家一起探究一下C語言生成隨機數(shù)的奧秘吧
    2023-03-03
  • C語言基于哈希表實現(xiàn)通訊錄

    C語言基于哈希表實現(xiàn)通訊錄

    這篇文章主要為大家詳細介紹了C語言基于哈希表實現(xiàn)通訊錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • c語言多線程編程使用示例

    c語言多線程編程使用示例

    這篇文章主要介紹了c語言多線程編程使用示例,需要的朋友可以參考下
    2014-04-04
  • Qt音視頻開發(fā)之視頻文件保存功能的實現(xiàn)

    Qt音視頻開發(fā)之視頻文件保存功能的實現(xiàn)

    和音頻存儲類似,視頻的存儲也對應(yīng)三種格式,視頻最原始的數(shù)據(jù)是yuv(音頻對應(yīng)pcm),視頻壓縮后的數(shù)據(jù)是h264(音頻對應(yīng)aac)。本文將利用Qt實現(xiàn)視頻文件保存功能,感興趣的可以了解一下
    2022-12-12
  • C++之set自定義排序問題

    C++之set自定義排序問題

    這篇文章主要介紹了C++之set自定義排序問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論