c++ - 使用mci发送字符串C++播放MP3

标签 c++ visual-c++ clr mci

我正在尝试在我正在做的一个项目中播放一些 mp3 文件作为背景音乐。我尝试使用 mcisendstring 播放它,但它无法工作:(

这些是我所做的:

CMP3_MCI myMp3;
std::string address= "C:\\Users\\music embed testing\\test.mp3";
myMp3.Load(address);
myMp3.Play();

//加载函数

void Load(string szFileName)
{
    m_szFileName = szFileName;
    Load2();
}

//加载2函数

void Load2()
{
      std::string szCommand = "open \"" + GetFileName() + "\" type mpegvideo alias " + GetFileName();       
       mciSendString(szCommand.c_str(), NULL, 0, 0);
}

//播放函数

void Play()
{
    std::string szCommand = "play " + GetFileName() + " from 0";
    mciSendString(szCommand.c_str(), NULL, 0, 0);
}

//getFileName 基本上返回存储为私有(private)属性的 m_szFileName

最佳答案

经过多次尝试和错误,我终于找到了可行的方法。对于那些和我遇到同样问题的人,这里是:

//if you are using unicode
LPCWSTR a = L"open cannon.mp3 type mpegvideo";
int error = 99;
error = mciSendString(a, NULL,0,0);
int error2;
LPCWSTR b = L"play cannon.mp3";
error2 = mciSendString(b, NULL, 0, 0);

//cannon.mp3 is stored in my resource file
//error is just for debugging

//if you are using multibyte

LPCSTR a = "open cannon.mp3 type mpegvideo";
mciSendString(a, NULL, 0,0);
LPCSTR b = "play cannon.mp3 repeat";
int error2 = mciSendString(b, NULL, 0, 0);

关于c++ - 使用mci发送字符串C++播放MP3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15490552/

相关文章:

c++ - Eclipse C++ 项目未构建 : Constructor Destructor Issue

c++ - 在 MFC 应用程序中创建和使用 Dll

c# - clr abi文档中的"this"指针

.net - 当CLR初始化数据结构来存储它们时,ValueType存储在哪里

c++ - 在 C++ 中定义与机器无关的数据类型

c++ - msvcr90.dll 有时间戳吗?

c++ - c++ 标准中 [dcl.constexpr]p5 的基本原理

c++ - 如何解决不符合 Visual C++ 标准的问题?

c++ - 从 SAFEARRAY 中获取一个元素(或将其转换为长数组)

c# - "FatalExecutionEngineError was detected"在重新定义 String.Empty 后使用 Console.Writeline