我正在尝试使用MCISendCommand播放midi文件,但我一直收到DWORD275错误代码(找不到文件)。此后,我将相关代码放入了一个fstream open调用中,该调用确实会找到该文件。然后,我关闭该文件以允许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;
}
}我还应该提到的是,这段代码在我的教材“游戏编程入门”中的一个示例项目中工作。据我所知,所有项目属性都是相同的。然而,由于某种原因,代码在我自己的项目中不能工作,尽管我已经从示例项目中复制/粘贴了每一行代码(没有那么多,3/5个小类)。
发布于 2015-02-10 05:33:29
有两件事你可能想试试:
来自msdn remarks的
以使用自动类型选择(通过注册表中的条目),将文件名和文件扩展名分配给由lpOpen标识的结构的lpstrElementName成员,将lpstrDeviceType成员设置为NULL,并设置MCI_OPEN_ELEMENT标志。
换句话说,让系统为您选择设备类型,而不是将其设置为"Sequencer“。
https://stackoverflow.com/questions/27696127
复制相似问题