使用bass库和easyx实现
部分代码:
static int define_music(string music_name)//"open D:\\source\\music\\Sign.mp3 alias BGM"
{
string prefix = "open D:\\source\\music\\";
string suffix = ".mp3 alias BGM";
string define_music_name = prefix + music_name + suffix;
cout << "音乐播放中的处理后的名字为" << define_music_name << endl;
//char File_name[] = "open D:\\source\\music\\Sign.mp3 alias BGM";//"D:\source\music\我只在乎你_邓丽君.mp3"
mciSendString(define_music_name.c_str(), NULL, NULL, NULL);//D:\\source\\music\\Marshmello_Anne_FRIENDS(V0).mp3
mciSendString("play BGM", 0, 0, 0);//不能增加wait//否则会阻塞
return 0;
}
static void draw_photo(string photo_name,string p_suffix)// "D:\source\photo\Sign\Sign1.jpg"
{
IMAGE img;
string prefix = "D:\\source\\photo\\";//"D:\\source\\photo\\";
string prefixfile = "\\";
string suffix = ".jpg";
string name_photo = prefix+ photo_name + prefixfile + photo_name + p_suffix + suffix;
loadimage(&img, name_photo.c_str(), 640, 440, true);
putimage(300, 200, &img);
}
static int music_pause_judge()
{
settextstyle(font_h, font_w, _T("Consolas"));
settextcolor(BLACK);
setbkmode(TRANSPARENT);
char tip[][30] = { "shift+p=音乐暂停","shift+s=音乐播放","ESC=退出音乐播放" };
for (int i = 0, top = 700, bottom = 840,left=0,right=426; i < 3; left+=426,right+=426, i++)
{
RECT r = { left,top,right,bottom };
drawtext(tip[i], &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX);
}
if ((GetAsyncKeyState(VK_SHIFT) & 0x8000) && (GetAsyncKeyState('P') & 0x8000))//同时按下shift和p暂停
{
printf("暂停播放\n");
mciSendString("pause BGM", 0, 0, 0);
while (1)//阻塞程序直到按下
{
if ((GetAsyncKeyState(VK_SHIFT) & 0x8000) && (GetAsyncKeyState('S') & 0x8000))//同时按下shift和r继续播放
{
mciSendString("resume BGM", 0, 0, 0);//播放暂停的音乐
printf("继续播放\n");
return 1;
}
if (GetAsyncKeyState(VK_ESCAPE) & 0x8000)//按下esc键,退出程序 //防止在阻塞中无法退出
{
printf("关闭音乐退出播放界面\n");
mciSendString("close BGM", 0, 0, 0);
return 0;
}
}
}
if (GetAsyncKeyState(VK_ESCAPE) & 0x8000)//按下esc键,退出程序
{
printf("关闭音乐退出播放界面\n");
mciSendString("close BGM", 0, 0, 0);
return 0;
}
if ((GetAsyncKeyState(VK_SHIFT) & 0x8000) && (GetAsyncKeyState('L') & 0x8000))//切换下一首
{
printf("切换下一首");
mciSendString("close BGM", 0, 0, 0);
return 3;
}
if ((GetAsyncKeyState(VK_SHIFT) & 0x8000) && (GetAsyncKeyState('R') & 0x8000))//切换上一首
{
printf("切换上一首");
mciSendString("close BGM", 0, 0, 0);
return 2;
}
return 1;
}
运行截图