我尝试使用MCISendCommand播放midi文件,但我一直收到DWORD错误代码275(找不到文件)。我已经将相关代码放在fstream打开调用中,该调用找到了该文件。然后我关闭文件以允许MCISendCommand代码访问它,但它仍然无法找到该文件。
以下是相关代码:
fstream f;
f.open(szMIDIFileName);
if(f.is_open())
// Then the file exists
{
f.close();
// See if the MIDI player needs to be opened
if (m_uiMIDIPlayerID == 0)
{
// Open the MIDI player by specifying the device and filename
MCI_OPEN_PARMS mciOpenParms;
mciOpenParms.lpstrDeviceType = "sequencer";
mciOpenParms.lpstrElementName = szMIDIFileName; //The name of the file passed in as a param
if (mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,
(DWORD_PTR)&mciOpenParms) == 0)
// Get the ID for the MIDI player
m_uiMIDIPlayerID = mciOpenParms.wDeviceID;
else
// There was a problem, so just return
// This is where I keep ending up in my code with DWORD error 275
return;
}
}
我还应该提一下,这段代码适用于我的教科书中的示例项目" Beginning Game Programming"迈克尔莫里森。据我所知,所有项目属性都是相同的。但是,出于某种原因,代码在我自己的项目中对我不起作用,即使我已经从示例项目中复制/粘贴了每一行代码(没有那么多,3/5小类)。
答案 0 :(得分:0)
您可能想尝试两件事:
使用自动类型选择(通过注册表中的条目), 将文件名和文件扩展名分配给lpstrElementName成员 由lpOpen标识的结构,设置lpstrDeviceType成员 为NULL,并设置MCI_OPEN_ELEMENT标志。
换句话说,让系统为您选择设备类型,而不是将其设置为“Sequencer”。