读书人

为什么线程创建了,里面的功能却没有实

发布时间: 2012-02-19 19:43:38 作者: rapoo

为什么线程创建了,里面的功能却没有实现?
线程代码如下:
UINT OpenDevice(LPVOID n)
{
MCI_OPEN_PARMS OpenParms;
UINT wDeviceID;
OpenParms.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_SEQUENCER; //MIDI类型
OpenParms.lpstrElementName = "E:\\CSDemo\\CSDemo\\res\\Wav\\back1.mid ";
OpenParms.wDeviceID = 0;
mciSendCommand (NULL, MCI_OPEN, MCI_WAIT | MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT, (DWORD)(LPVOID) &OpenParms);
wDeviceID = OpenParms.wDeviceID;

MCI_PLAY_PARMS PlayParms;
PlayParms.dwFrom = 0;
wDeviceID = OpenParms.wDeviceID;
// 指定从什么地方(时间)播放
mciSendCommand (wDeviceID, MCI_PLAY, MCI_FROM, (DWORD)(LPVOID)&PlayParms);
return 1;
}
在初始化对话框的时候创建这个线程来播放MIDI文件.为什么直接运行的时候没有播放,但在调试状态下却可以播放?各路高人指点一下.还有,还有什么其它方法播放MIDI文件吗?这样播放,需要1-2秒的延迟.

[解决办法]
你在Return 1 之前加个MessageBox,然后再看看声音出不出来。 :)

另外别忘了Close 你的 Device。

如果不想要延迟,可以用DirectMusic。


[解决办法]
MCI_PLAY_PARMS中的DWORD dwTo;初始化一下

读书人网 >VC/MFC

热点推荐