项目一 easyX和音乐模块

1. 引入头文件mmsystem.h

2.使用pragma comment 引入对应的静态库

#include <iostream>
#include <graphics.h>
#include <MMSystem.h> // 音乐播放需要的头文件
#include <windows.h>
// 预处理->编译->汇编->链接
#pragma comment(lib , "winmm.lib") //将音乐文件播放所需要的winmm.lib文件加入到工程中
using namespace std;

int main() {
	initgraph(800, 600);
	mciSendString(_T("play E:\\music\\music.mp3 repeat"), 0, 0, 0);
	system("pause");
	return 0;
}

 2024.10.7

_T() 补充说明

如果在项目里面使用的是多字符集

那么在使用easyx的相关接口时,就不需要使用_T()

在属性里面查看下我们项目是什么字符集

我们使用的是unicode编码 所以得加上_T()

项目二 在音频的基础上加载一个视频版本

(素材指的是 一个一个连续的图片)

这里使用的素材是一张一张连续的图片,将它们逐个播放有动态的效果

#include <stdio.h>
#include <graphics.h>
#include <MMSystem.h> // 音乐播放需要的头文件
#include <windows.h>
// 预处理->编译->汇编->链接
#pragma comment(lib , "winmm.lib") //将音乐文件播放所需要的winmm.lib文件加入到工程中
using namespace std;
#define IMAGE_LEN 100
int main() {
	char buffer[128];
	initgraph(800, 600);
	mciSendString(_T("play E:\\music\\music.mp3 repeat"), 0, 0, 0);
	while (1) {
		for (int i = 0; i < IMAGE_LEN; i++) {
			如果我们的图片 的格式是1 2 3的文件命名的话 我们就用for循环 读取每一张图片
			sprintf(buffer, "E:\\images\\%d.jpg", i); // 读取图片
			loadimage(0, buffer); 这里又有问题了 说没有重载的函数 我们用_T()函数将路径转换为宽字符
			loadimage(0, _T(buffer)); // 这里又出现问题 _T貌似不能接受变量
			有两种方法 一种是自己写一个字符集转换函数 一种是属性直接调成多字符集
			我们选择第二种方法
			loadimage(0, buffer); // 加载图片
			Sleep(50); // 延时50ms
		} 
	}
	system("pause");
	return 0;
}

这种是有问题的,性能不咋好

原因是for循环的时候边循环边加载图片

所以我们把images预先加载到数组里面

#include <stdio.h>
#include <graphics.h>
#include <MMSystem.h> // 音乐播放需要的头文件
#include <windows.h>
// 预处理->编译->汇编->链接
#pragma comment(lib , "winmm.lib") //将音乐文件播放所需要的winmm.lib文件加入到工程中
using namespace std;
#define IMAGE_LEN 100
int main() {
	char buffer[IMAGE_LEN];
	IMAGE img[IMAGE_LEN];
    initgraph(800, 600);
	mciSendString(_T("play E:\\music\\music.mp3 repeat"), 0, 0, 0);
	for (int i = 1; i <= IMAGE_LEN; i++) {
		sprintf(buffer, "E:\\images\\%d.jpg", i);
		loadimage(&img[i], buffer); // 加载图片
	}
	while (1) {
		for (int i = 0; i < IMAGE_LEN; i++) {
			putimage(0, 0, &img[i]); // 显示图片
			Sleep(50); // 延时50ms
		} 
	}
	system("pause");
	return 0;
}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐