您现在的位置: 中国教师站 >> 教师关注 >> 电脑技术 >> 编程技术 >> Visual C >> 正文

Google
Windows环境下的麦克风录音系统
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 11:37:42
了画波形用的 
 SetTimer(1, 200 /*start slow*/, NULL);
           }
 
    4.在定时器的回调函数中画波形.
           void CMicDemoDlg::OnTimer(UINT nIDEvent)
            {
     if(nIDEvent == 1)
    { 
  static const int xCon = 13;
  static const int yCon = 13;
  static const int wCon = 623;
  static const int hCon = 80;
  
  CClientDC dc(this);
  
  CBitmap   Bitmap;
  CBitmap * pbmOld = NULL;  
  CDC         dcMem;
  
  dcMem.CreateCompatibleDC(&dc);  
  Bitmap.CreateCompatibleBitmap(&dc,wCon,hCon);
  
  pbmOld = dcMem.SelectObject(&Bitmap);
  
  dcMem.PatBlt(0,0,wCon,hCon, WHITENESS);  
  dcMem.MoveTo(0,hCon/2);
  
  //
  // display incomming signal--key idea!
  //
  for(int x =0 ; x < wCon; x++)  // display Input
  {
   dcMem.LineTo(x,(hCon >> 1) - (theSoundCapture().InputBuffer[x] >> 7));
  }
  
  dc.BitBlt(xCon,yCon,wCon,hCon,&dcMem, 0, 0, SRCCOPY);
  
  dcMem.SelectObject(pbmOld);
  dcMem.DeleteDC(); 
   }
   else
          CDialog::OnTimer(nIDEvent);
            }
      
      5.点击停止(Stop)按钮的时候停止录音和写WAV文件
                  void CMicDemoDlg::OnStop()
                 {
          // TODO: Add your control notification handler code here
                     m_btnStop.EnableWindow(FALSE);

                       theSoundCapture().__closeMic();

         m_btnStart.EnableWindow(TRUE);
                 }
看完整段代码你可能会很奇怪怎么在CmicDemoDlg中居然都没有定义一个CSoundIn对象??呵呵,原因很简单,因为设备的独占性所以在一个时刻只能有一个CSoundIn对象存在(因为CSoundIn对象需要占据录音设备),所以我们必须限制程序员生成CSoundIn对象的数量,怎么限制呢?那就是把CSoundIn的构造函数放在private区域里面:
  
     private:
 BOOL  GetBestWaveFormat(WAVEFORMATEX & waveFormatEx);
 
 // because sound card is one and only so i must limit the number of CSoundIn object,
 // but how to limit the class object nums?maybe put constructor into private scope is
 // a good idea,:-)
 CSoundIn(); 

这样的话就根本无法声明一个CSoundIn对象,不信你试一下在你的代码中写上:
     CSoundIn  soundInOb

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页

相关专题:
 
 网友评论:(评论内容只代表网友观点,与本站立场无关!)
GOOGLE广告

阅读排行

| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
中国教师站

中国教师站 版权所有 Copyright © 2006-2020 All Rights Reserved 站长:Sina & Siny
[备用域名:www.JXZYW.Com] 有事请留言有事请留言
【实力成就精品 诚信呵护品牌】

信息产业部备案
苏ICP备06018635号