用VC實現簡單的錄音和播音

來源:互聯網
上載者:User

      用VC可以進行簡單的錄音和播音操作,這裡調用的是微軟的音頻開發包,通過MCI函數(Media Control Interface,媒體控制介面)即可實現。只需要建立一個對話方塊,上面列四個按鈕,分別是錄音、停止、播放、儲存即可。

                               

(1)在StdAfx.h中加入下面的語句:

#include<vfw.h>                            //微軟的音視頻開發標頭檔

#pragma comment(lib,"vfw32.lib")  //表示連結vfw32.lib庫。和在工程設定裡寫上鏈入vfw32.lib的效果一樣

(2)在dlg.h中定義一個操作控制代碼,HWND mciwav;

(3)錄音按鈕實現函數:

void CSoundrecordandplayDlg::OnRecord()
{
      MCIWndClose(mciwav);    //開啟一個聲音的之前關閉以前的聲音
      mciwav = MCIWndCreate(this->m_hWnd,AfxGetApp()->m_hInstance,WS_CAPTION,NULL);

//建立控制代碼,最後一個參數如果是NULL,就建立一個;如果是一個檔案的路徑就開啟它。

//this->m_hWnd表示父控制代碼,AfxGetApp()獲得當前應用進程的指標,進而取得執行個體
      MCIWndNew(mciwav,"waveaudio");        //建立裝置

      if (MCIWndCanRecord(mciwav))         //判斷是否能夠錄音
     {
          MCIWndRecord(mciwav);
      }
}

(4)錄音停止按鈕函數:

void CSoundrecordandplayDlg::OnStop()
{
        MCIWndStop(mciwav);
}

(5)錄音播放函數:

void CSoundrecordandplayDlg::OnPlay()
{
        if (MCIWndCanPlay(mciwav))           //判斷是否能夠播放
       {
              MCIWndPlay(mciwav);
       }
}

(6)儲存函數

void CSoundrecordandplayDlg::OnSave()
{
       CString m_path;
       CFileDialog wav(FALSE,NULL,NULL,OFN_ALLOWMULTISELECT,"wav File(*.wav)|*.wav");

//建構函式建立一個檔案儲存對話方塊,並且設定類型過濾
       if (wav.DoModal() == IDOK)            //如果選擇儲存按鈕。DoModal實際上實現了對話方塊的建立、顯示、關閉的全過程
      {
             m_path = wav.GetPathName();   //獲得絕對路徑和輸入的檔案名稱

      }
      else
      {
             return;
      }   
      if (MCIWndCanSave(mciwav))           //如果能儲存
      {
             MCIWndSave(mciwav,"a");        //儲存成預設的名字a
             CopyFile("a",m_path,FALSE);     //把a檔案拷貝到另一路徑和名字
      }
      else
      {
             MessageBox("can not save");
      }

}

//這裡再說明DoModal的其它用法,除了上面建立開啟或者另存新檔對話方塊之外,另一種方式就是調用其它對話方塊。比如,建立了一個對話方塊TestDialog,那麼使用類嚮導時會提示為該對話方塊添加類TestDialogClass。在主對話方塊的按鈕函數中,加入如下代碼:

 TestDialogClass test;
 test.DoModal();

即可實現對子對話方塊的調用。注意編譯之前要加上新類的標頭檔。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.