如题,我想在自己的游戏里弄些音效,可以淡入淡出
应该怎么做?用什么函数最好?

解决方案 »

  1.   

    BOOL   CMidi::Open(   const   char   *lpszFilename   )  
      {  
       
      if(   !m_bOpened   ){  
       
      //   Initialize   member   variables.  
      m_bPaused   =   m_bPlaying   =   FALSE;  
      m_wDeviceID   =   0;  
       
      //   See   if   the   file   exists.  
      CFileStatus   Status;  
      if(   !CFile::GetStatus(   lpszFilename,   Status   )   )  
      return(   FALSE   );  
       
      //   Open   the   device.  
      MCI_OPEN_PARMS   OpenParms;  
      OpenParms.lpstrDeviceType   =   (LPCSTR)   MCI_DEVTYPE_SEQUENCER;  
      OpenParms.lpstrElementName   =   (LPCSTR)   lpszFilename;  
      OpenParms.wDeviceID   =   0;  
      if(   mciSendCommand(   NULL,   MCI_OPEN,   MCI_WAIT   |   MCI_OPEN_TYPE   |   MCI_OPEN_TYPE_ID   |   MCI_OPEN_ELEMENT,   (DWORD)(LPVOID)   &OpenParms   )   )  
      return(   FALSE   );  
      m_wDeviceID   =   OpenParms.wDeviceID;  
      m_bOpened   =   TRUE;  
       
      //   Set   the   time   format   to   milliseconds.  
      MCI_SET_PARMS   SetParms;  
      SetParms.dwTimeFormat   =   MCI_FORMAT_MILLISECONDS;  
      if(   mciSendCommand(   m_wDeviceID,   MCI_SET,   MCI_SET_TIME_FORMAT,   (DWORD)(LPVOID)   &SetParms   )   ){  
      Close();  
      return(   FALSE   );  
      }  
      mciSendCommand(   m_wDeviceID,   MCI_SEEK,   MCI_SEEK_TO_START,   NULL   );  
      return(   TRUE   );  
      }  
       
      return(   FALSE   );  
       
      }   
      

  2.   

    因为您是控制自己游戏里的音量,建议使用waveOutSetVolume
      

  3.   

    m_dwCount 是使用  MCI_OPEN 取得的设备ID
    MCI_DGV_SETAUDIO_PARMS mciSetAudioPara;
    mciSetAudioPara.dwCallback = (DWORD)GetSafeHwnd();
    mciSetAudioPara.dwItem = MCI_DGV_SETAUDIO_VOLUME;
    mciSetAudioPara.dwValue = 100; //此处就是音量大小 (0--1000)
    mciSendCommand(m_dwCount, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE |  MCI_DGV_SETAUDIO_ITEM, 
    (DWORD)(LPVOID)&mciSetAudioPara);
    你试试
      

  4.   

    to 2楼:
    waveOutSetVolume只能控制波形文件啊........to 3楼:
    我的库里面没MCI_DGV_SETAUDIO_PARMS这个结构体啊
    我用的是VS2008编译器
      

  5.   

    参考:
    http://blog.csdn.net/lqg1999/archive/2009/03/19/4006047.aspx
      

  6.   

    我现在临时学了下Directshow,
    遇到了一个这个问题;
    pControl->Run(); //开始播放
    _getch();
    pControl->Pause(); //暂停
    _getch();
    pControl->Run(); //继续
    _getch();
    pControl->Stop();                       //停止(和pause效果一样)
    _getch();
    pControl->Run(); //并没有重新开始,继续接着播放
    _getch();
    怎么Stop效果和Pause一样啊,并不会将播放复位啊!!!
    请大家帮下忙啊!