C/C++简易版音乐播放器图形库制作

使用时将项目属性字符集改成“使用多字节字符集”,符合模式改为“否”。

代码中部分文件来源于本地文件,使用时需自行更换(代码中有注释)。

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <string.h>
#include <conio.h>
#include <mmsystem.h>

#pragma comment(lib,"winmm.lib") 



typedef struct Button {
	int x;
	int y;
	int	xx;
	int yy;
	COLORREF color;
	char* buttonStr;
}BTN, * LPBTN;
/*
typedef :起别名
	struct Button==BNT;
	struct Button*==LPBNT;
*/


//做按钮:
//1、确定按钮的属性----》创建按钮的过程
LPBTN createButton(int x, int y, int xx, int yy, COLORREF color, char* buttonStr) {
	LPBTN button = (LPBTN)malloc(sizeof(BTN));
	button->x = x;
	button->y = y;
	button->xx = xx;
	button->yy = yy;
	button->color = color;
	button->buttonStr = (char*)malloc(strlen(buttonStr) + 1);
	strcpy(button->buttonStr, buttonStr);

	return button;
}

//画按钮
void drawButton(LPBTN pButton) {
	setlinecolor(BLACK);
	setfillcolor(pButton->color);
	fillrectangle(pButton->x, pButton->y, pButton->xx, pButton->yy);
	setbkmode(TRANSPARENT);
	settextcolor(BLACK);
	settextstyle(30, 0, "楷体");
	outtextxy(pButton->x + 15, pButton->y + 10, pButton->buttonStr);
}

//判断鼠标位置
int IsinButton(LPBTN pButton,MOUSEMSG m) {
	if (pButton->x <= m.x && m.x <= pButton->xx && pButton->y <= m.y && pButton->yy >= m.y) {
		return 1;
	}
	return 0;
}

//按钮颜色效果
void Color(LPBTN pButton, MOUSEMSG m) {
	if (IsinButton(pButton, m)) {
		pButton->color = RGB(142, 210, 138);
	}
	else {
		pButton->color = YELLOW;
	}
}

//鼠标点击功能
int clickButton(LPBTN pButton, MOUSEMSG m) {
	if (IsinButton(pButton, m)) {

		if (m.uMsg == WM_LBUTTONDOWN) {
			return 1;
		}
	}
	return 0;
}


int main() {
/*
* 音乐播放:
	mciSendString("指令集",0,0,0);
		指令集:
			open:打开
			play:播放
			pause:暂停
			resume:继续
			close:关闭
		其他指令:
			repeat:重复
			wait:等待
*/

	//打开音乐文件
	mciSendString("open be.mp3  /*代码文件夹下的MP3音频文件名称*/  ", 0, 0, 0);
	//按钮的使用
	LPBTN play = createButton(300,200,450,250,YELLOW,"播放音乐");
	LPBTN pause = createButton(300,260,450,310,YELLOW,"暂停音乐");
	LPBTN resume = createButton(300,320,450,370,YELLOW,"继续音乐");
	LPBTN close = createButton(300,380,450,430,YELLOW,"关闭音乐");

	//创建窗口
	initgraph(800, 600);
	

	//识别鼠标动作
	MOUSEMSG m;
	//图片类型定义===IMAGE
	IMAGE bk;
	//加载图片
	loadimage(&bk, "背景.png  /*代码文件夹下的背景图片文件名称*/  ", 800, 600);

	while (1) {
		BeginBatchDraw();
		cleardevice();
		putimage(0, 0, &bk);        //放置背景图片
		drawButton(play);
		drawButton(pause);
		drawButton(resume);
		drawButton(close);
		MOUSEMSG m = GetMouseMsg();			//获取鼠标消息
		Color(play,m);
		Color(pause,m);
		Color(resume,m);
		Color(close,m);
		if (clickButton(play, m)) {
			//音乐加载指令
			//播放音乐文件
			mciSendString("play be.mp3  /*代码文件夹下的MP3音频文件名称*/  ", 0, 0, 0);
		}
		if (clickButton(pause, m)) {
			//暂停音乐
			mciSendString("pause be.mp3  /*代码文件夹下的MP3音频文件名称*/  ", 0, 0, 0);
		}
		if (clickButton(resume, m)) {
			//继续音乐
			mciSendString("resume be.mp3  /*代码文件夹下的MP3音频文件名称*/  ", 0, 0, 0);
		}
		if (clickButton(close, m)) {
			//关闭音乐
			mciSendString("close be.mp3  /*代码文件夹下的MP3音频文件名称*/  ", 0, 0, 0);
			exit(0);
		}

		EndBatchDraw();
	}
	
	
	_getch();
	closegraph();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Midoch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值