|
发表于 2004-5-15 12:04:00
|
显示全部楼层
Re:如何将声音作为资源加进去?怎么播放?
如果是mid或者wav等等,可以使用directmusic进行播放。至于资源调用,基本方式如下:
一:建立资源,可以使用自定义资源类型,比如midi,我喜欢使用"MIDI"作为资源类型
二:将midi文件作为资源的外部连接加入,得到一些资源,假设其ID是IDR_MIDIxxx
三:使用directmusic调用资源,这点在DX SDK中有详细说明,楼主怎么不看?该函数如下:
HRESULT LoadMidi(HMODULE hMod, WORD ResourceID,
IDirectMusicLoader8* pLoader, IDirectMusicSegment8** ppSeg)
{
HRESULT hr;
DMUS_OBJECTDESC objDesc;
HRSRC hFound = FindResource(hMod, MAKEINTRESOURCE(ResourceID), RT_RCDATA);
HGLOBAL hRes = LoadResource(hMod, hFound);
if (NULL == hRes) return E_FAIL;
objDesc.dwSize = sizeof(DMUS_OBJECTDESC);
objDesc.guidClass = CLSID_DirectMusicSegment;
objDesc.dwValidData = DMUS_OBJ_CLASS | DMUS_OBJ_MEMORY;
objDesc.pbMemData = (BYTE *) LockResource(hRes);
objDesc.llMemLength = SizeofResource(hMod, hFound);
if (pLoader && ppSeg)
{
hr = pLoader->GetObject(
&objDesc, IID_IDirectMusicSegment8,
(void**) ppSeg);
return hr;
}
else return E_INVALIDARG;
}
注意,这里需要修改一处,就是HRSRC hFound = FindResource(hMod, MAKEINTRESOURCE(ResourceID), RT_RCDATA);,需要将最后的RT_RCDATA改为"MIDI"(因为使用的是自定义的"MIDI"资源)
其他的诸如如何播放音乐和音乐控制之类DXSDK中也写的很明白,楼主自己去看吧。 |
|