C语言实现音乐播放器的示例代码详解
本文主要和大家分享一个C语言的小DEMO,其主要功能可以实现音乐播放器,文中的示例代码讲解非常详细,具有一定的学习借鉴价值,需要的朋友可以参考一下:
该程序是一个小的DEMO,实现了以下几个功能,可以借鉴学习。
功能1:鼠标选择互动功能。通过鼠标的移动和按下,按钮的颜色也会发生改变。
功能2:音乐的播放与暂停。通过按钮的操作,程序会做出相应的响应。如按下播放音乐1按钮。程序就会加载对应的音乐,其他按钮也是同理。具体的含义以及使用,可以查看代码。
实现代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | // // 编译该范例前,请把 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" )); } |
本文地址:http://9zoku.com/ruanjianbc/721.html
版权声明:本文内容来自互联网,该文版权归原作者所有。本站仅提供信息存储空间服务,不拥有文章所有权,不承担相关法律责任。若对本内容有异议或投诉请与管理员联系 5604882#qq.com(请将#换成@)。
版权声明:本文内容来自互联网,该文版权归原作者所有。本站仅提供信息存储空间服务,不拥有文章所有权,不承担相关法律责任。若对本内容有异议或投诉请与管理员联系 5604882#qq.com(请将#换成@)。