0
点赞
收藏
分享

微信扫一扫

wince 录音 wc9713学习


​​Waveform Audio 驱动(Wavedev2)之:WAV 驱动解析 ​​​​

http://www.qqgb.com/Program/VC/VCmultimedia/Program_55233.htmlhttp://www.fortime.net/html/directshow/20070918/2619.html补充两篇文章recordhwnd 这个例子

基于D:\WINCE500\PUBLIC\COMMON\SDK\SAMPLES\AUDIO\WAVREC 的录音程序

建立: PCRecord MFC 工程

工程加入:

wavrec.cpp
wavefile.cpp
wavefile.h
将wavrec.cpp 的 winmain 函数声明去掉,把 winmain(){} 的{}改为void StartRecord(char *pFile);
函数(为了避免一开始就执行录音窗口)
PCRecordDlg.cpp 加入
#include "wavefile.h"
#include "wavrec.h" //wavrec.h 加入void StartRecord(char *pFile);
1. 加入 edit 组件名为IDC_SAVE_FILE,加入按钮IDC_BROWSE,并加入按钮事件
CFileDialog Dlg(false);
if (Dlg.DoModal() == IDCANCEL)
return;
m_strFile = Dlg.GetPathName();
m_strFile+= ".wav";
//MessageBox(m_strFile,TEXT("msg"),MB_OK);
UpdateData(false);
2. DoDataExchange 在这里加入DDX_Text(pDX, IDC_SAVE_FILE, m_strFile); 数据更新,这就实现了路径的显示
3. 加入按钮OnStart,事件为:
void CPCRecordDlg::OnBnClickedOnstart()
{ //MessageBox(NULL,(LPCTSTR)pFile,TEXT("msg"),MB_OK);
if (m_strFile.IsEmpty())
{
AfxMessageBox(_T("请先输入要保存的文件名"));
return;
}
UpdateData(true);
StartRecord((char *)m_strFile.GetBuffer(m_strFile.GetLength()));
}
4. 将PTSTR pszFilename = (PTSTR)pFile; 估计 TEXT 是PTSTR型
5. 到此是可以正常玩一个录音的了,但是,只能有一个主线程在转啊,所以一旦运行录音整个dialog就停止了,只能等到录音完,所以必须创建一个进程来跑这个函数!看下面在类中创建线程
void CPCRecordDlg::OnBnClickedOnstart()
{
if (m_strFile.IsEmpty())
{
AfxMessageBox(_T("请先输入要保存的文件名"));
return;
}
//pFile=m_strFile.GetBuffer(m_strFile.GetLength());
//MessageBox(pFile,TEXT("msg"),MB_OK);UpdateData(true);
SetTimer(1, 10, NULL);
//DWORD dwThreadID;
HANDLE hThread = CreateThread(NULL, // no security attributes
0, // use default stack size
(LPTHREAD_START_ROUTINE)ThreadFunc,
(LPVOID)NULL, // 可以通过这个参数传送一个参数的指针到处理函数中
0, // creation flag
&dwThreadID); // thread identifier
if (hThread == NULL)
MessageBox(TEXT("创建线程出错!"),TEXT("msg"),MB_OK);;
StartRe=(char *)m_strFile.GetBuffer(m_strFile.GetLength());}
DWORD ThreadFunc(LPVOID lpVoid) //lpVoid即为创建线程时传入的参数,可以为空
{
//在你的线程中的处理。
//MessageBox(NULL,TEXT("msg"),TEXT("msg"),MB_OK);
StartRecord(StartRe);
return 0;
} 6. 在空白处加上线程处理函数
DWORD ThreadFunc(LPVOID lpVoid) //lpVoid即为创建线程时传入的参数,可以为空
{
//在你的线程中的处理。
//MessageBox(NULL,TEXT("msg"),TEXT("msg"),MB_OK);
StartRecord(StartRe);
return 0;
}
7. 在头文件中加入
static DWORD WINAPI ThreadFunc(LPVOID lpVoid);
static char *StartRe;

wince 录音 wc9713学习_文件名

举报

相关推荐

0 条评论