有谁能告诉我在MFC(VC++)中如何添加声音?

有谁能告诉我在MFC(VC++)中如何添加声音?,第1张

源程序清单如下: LPSTR szFileName//声音文件名 MMCKINFO mmckinfoParentMMCKINFO mmckinfoSubChunkDWORD dwFmtSizeHMMIO m_hmmio//音频文件句柄 DWORD m_WaveLongHPSTR lpData//音频数据 HANDLE m_hDataHANDLE m_hFormatWAVEFORMATEX * lpFormatDWORD m_dwDataOffsetDWORD m_dwDataSizeWAVEHDR pWaveOutHdrWAVEOUTCAPS pwocHWAVEOUT hWaveOut//打开波形文件 if(!(m_hmmio=mmioOpen(szFileName,NULL,MMIO_READ|MMIO_ALLOCBUF))) { //File open Error Error("Failed to open the file.")//错误处理函数 return false} //检查打开文件是否是声音文件 mmckinfoParent.fccType =mmioFOURCC('W','A','V','E')if(mmioDescend(m_hmmio,(LPMMCKINFO)&mmckinfoParent,NULL,MMIO_FINDRIFF)) { //NOT WAVE FILE AND QUIT } //寻找 'fmt' 块 mmckinfoSubChunk.ckid =mmioFOURCC('f','m','t',' ')if(mmioDescend(m_hmmio,&mmckinfoSubChunk,&mmckinfoParent,MMIO_FINDCHUNK)) { //Can't find 'fmt' chunk } //获得 'fmt '块的大小,申请内存 dwFmtSize=mmckinfoSubChunk.cksize m_hFormat=LocalAlloc(LMEM_MOVEABLE,LOWORD(dwFmtSize))if(!m_hFormat) { //failed alloc memory } lpFormat=(WAVEFORMATEX*)LocalLock(m_hFormat)if(!lpFormat) { //failed to lock the memory } if((unsigned long)mmioRead(m_hmmio,(HPSTR)lpFormat,dwFmtSize)!=dwFmtSize) { //failed to read format chunk } //离开 fmt 块 mmioAscend(m_hmmio,&mmckinfoSubChunk,0)//寻找 'data' 块 mmckinfoSubChunk.ckid=mmioFOURCC('d','a','t','a')if(mmioDescend(m_hmmio,&mmckinfoSubChunk,&mmckinfoParent,MMIO_FINDCHUNK)) { //Can't find 'data' chunk } //获得 'data'块的大小 m_dwDataSize=mmckinfoSubChunk.cksize m_dwDataOffset =mmckinfoSubChunk.dwDataOffset if(m_dwDataSize==0L) { //no data in the 'data' chunk } //为音频数据分配内存 lpData=new char[m_dwDataSize]if(!lpData) { //faile } if(mmioSeek(m_hmmio,SoundOffset,SEEK_SET)<0) { //Failed to read the data chunk } m_WaveLong=mmioRead(m_hmmio,lpData,SoundLong)if(m_WaveLong<0) { //Failed to read the data chunk } //检查音频设备,返回音频输出设备的性能 if(waveOutGetDeVCaps(WAVE_MAPPER,&pwoc,sizeof(WAVEOUTCAPS))!=0) { //Unable to allocate or lock memory } //检查音频输出设备是否能播放指定的音频文件 if(waveOutOpen(&hWaveOut,DevsNum,lpFormat,NULL,NULL,CALLBACK_NULL)!=0) { //Failed to OPEN the wave out devices } //准备待播放的数据 pWaveOutHdr.lpData =(HPSTR)lpDatapWaveOutHdr.dwBufferLength =m_WaveLongpWaveOutHdr.dwFlags =0if(waveOutPrepareHeader(hWaveOut,&pWaveOutHdr,sizeof(WAVEHDR))!=0) { //Failed to prepare the wave data buffer } //播放音频数据文件 if(waveOutWrite(hWaveOut,&pWaveOutHdr,sizeof(WAVEHDR))!=0) { //Failed to write the wave data buffer } //关闭音频输出设备,释放内存 waveOutReset(hWaveOut)waveOutClose(hWaveOut)LocalUnlock(m_hFormat)LocalFree(m_hFormat)delete [] lpData

ppt设置爆破的方法:

1、添加音效 *** 作如下:我们点开“切换”选项卡;

2、点开“切换”选项后,在“计时”功能区这里,我们看到有“声音”;当前默认状态是“无声音”;

3、我们在小三角这里点下,d出的下拉菜单,这些就是各种的音效,在当中点选我们所需要的“爆炸”这种音效。

4、点“爆炸”后,在“声音”的框内即显示“爆炸”;然后,我们可以预览下,听下音效效果。我们点开“幻灯片放映”选项卡。

5、点开“幻灯片放映”后,点击“从当前幻灯片开始”;点后,即可听到爆炸声音效果了。

用 Beep 函数。

BOOL WINAPI Beep(

__in DWORD dwFreq,

__in DWORD dwDuration

)

Beep( 发音频率,发音时间长度)

频率 0x25 到 0x7FFF

发音时间长度 -- 以毫秒计。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11444782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存