C語言實(shí)現(xiàn)音樂播放器的示例代碼
介紹
該程序是一個(gè)小的DEMO,實(shí)現(xiàn)了以下幾個(gè)功能,可以借鑒學(xué)習(xí)。
功能1:鼠標(biāo)選擇互動(dòng)功能。通過鼠標(biāo)的移動(dòng)和按下,按鈕的顏色也會(huì)發(fā)生改變。
功能2:音樂的播放與暫停。通過按鈕的操作,程序會(huì)做出相應(yīng)的響應(yīng)。如按下播放音樂1按鈕。程序就會(huì)加載對(duì)應(yīng)的音樂,其他按鈕也是同理。具體的含義以及使用,可以查看代碼。

實(shí)現(xiàn)代碼
//
// 編譯該范例前,請(qǐng)把 music.mp3 放在項(xiàng)目文件夾中
// 把 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語言實(shí)現(xiàn)音樂播放器的示例代碼的文章就介紹到這了,更多相關(guān)C語言音樂播放器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義
下面小編就為大家分享一篇詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義,具有非常好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-11-11
Qt音視頻開發(fā)之視頻文件保存功能的實(shí)現(xiàn)
和音頻存儲(chǔ)類似,視頻的存儲(chǔ)也對(duì)應(yīng)三種格式,視頻最原始的數(shù)據(jù)是yuv(音頻對(duì)應(yīng)pcm),視頻壓縮后的數(shù)據(jù)是h264(音頻對(duì)應(yīng)aac)。本文將利用Qt實(shí)現(xiàn)視頻文件保存功能,感興趣的可以了解一下2022-12-12

