⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcrecorddlg.cpp

📁 完整源码,您可以二次开发,增减功能,文件及支持的芯片看下面说明: PCRecord.cpp PCRecord.h PCRecordDlg.cpp PCRecordDlg.h Resource
💻 CPP
字号:
// PCRecordDlg.cpp : 实现文件
//
#include <windows.h>
#include "stdafx.h"
#include "PCRecord.h"
#include "PCRecordDlg.h"
#include "wavefile.h"
#include "wavrec.h"
#include<time.h>


#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// CPCRecordDlg 对话框



CPCRecordDlg::CPCRecordDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPCRecordDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CPCRecordDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_SAVE_FILE, m_strFile);
}

BEGIN_MESSAGE_MAP(CPCRecordDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
	ON_WM_SIZE()
#endif
	//}}AFX_MSG_MAP
	
	ON_BN_CLICKED(OnStart, &CPCRecordDlg::OnBnClickedOnstart)
	ON_BN_CLICKED(IDC_BROWSE, &CPCRecordDlg::OnBnClickedBrowse)
	ON_WM_TIMER()
END_MESSAGE_MAP()


// CPCRecordDlg 消息处理程序

BOOL CPCRecordDlg::OnInitDialog()
{
	
	CDialog::OnInitDialog();

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码



	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CPCRecordDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
	DRA::RelayoutDialog(
		AfxGetInstanceHandle(), 
		this->m_hWnd, 
		DRA::GetDisplayMode() != DRA::Portrait ? 
			MAKEINTRESOURCE(IDD_PCRECORD_DIALOG_WIDE) : 
			MAKEINTRESOURCE(IDD_PCRECORD_DIALOG));
}
#endif


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);

 //////////////
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());
SetTimer(1, 1000, NULL);
clocker=-1;
////////////////////////////////

}
  DWORD   ThreadFunc(LPVOID lpVoid) //lpVoid即为创建线程时传入的参数,可以为空   
  {     
  //在你的线程中的处理。  
	  //MessageBox(NULL,TEXT("msg"),TEXT("msg"),MB_OK);
      StartRecord(StartRe);
	  stop=true;
  return   0;   
  }
void CPCRecordDlg::OnBnClickedBrowse()
{
	// TODO: 在此添加控件通知处理程序代码
		CFileDialog    Dlg(false);

	if (Dlg.DoModal() == IDCANCEL)
		return;
	m_strFile = Dlg.GetPathName();
	m_strFile+= ".wav";
	//MessageBox(m_strFile,TEXT("msg"),MB_OK);
	UpdateData(false);
}


void CPCRecordDlg::OnTimer(UINT nIDEvent) 
{	
	//MessageBox(TEXT("OnTimer"),TEXT("msg"),MB_OK);
	CString str,strWnd;

	//MessageBox((LPCTSTR)hFile,TEXT("msg"),MB_OK);
	// Show file size

//GetDlgItem(IDC_FILE_SIZE)->SetWindowInt(dwLen);

//	MessageBox(TEXT("msg"),(LPCTSTR)hFile,MB_OK);
	//MessageBox((LPCTSTR)hFile,TEXT("msg"),MB_OK);	Int2MB(GetFileSize(hFile,NULL),str);	GetDlgItem(IDC_FILE_SIZE)->SetWindowText(str);

	
	
   
    clocker++;
	// Show record time
	Int2Time(clocker,str);	
	GetDlgItem(IDC_SECOND)->SetWindowText(str);
	CDialog::OnTimer(nIDEvent);
    if(stop==true)
	KillTimer(1);
	
}

BOOL CPCRecordDlg::DestroyWindow() 
{
	KillTimer(1);
	
	return CDialog::DestroyWindow();
}


////////////////////////////////////////////////////////////////////
// Name        : Int2Time
// Description : Change integer into time string
// Parameter   : None
// Return      : None
// Remark      : None
////////////////////////////////////////////////////////////////////
void CPCRecordDlg::Int2Time(int delta, CString &strRet)
{
	CString str;

	strRet = "";
	// weeks
	if (delta >= 604800)
		{
		str.Format(L"%d周", delta/604800);		
		strRet += str;
		delta = delta % 604800;
		}

	// days
	if (delta >= 86400)
	{
		str.Format(L"%d天", delta/86400);
		strRet += str;
		delta = delta % 86400;
	}

	// hours
	if (delta >= 3600)
	{
		str.Format(L"%d时", delta/3600);
		strRet += str;
		delta = delta % 3600;
	}

	// minutes
	if (delta >= 60)
	{
		str.Format(L"%d分", delta/60);
		strRet += str;
		delta = delta % 60;
	}

	// seconds
	str.Format(L"%d秒",delta);
	strRet += str;	

	return;
}




////////////////////////////////////////////////////////////////////
// Name        : Int2MB
// Description : Translate integer value into Size string
// Parameter   : None
// Return      : None
// Remark      : None
////////////////////////////////////////////////////////////////////
void CPCRecordDlg::Int2MB(int fsize, CString &strRet)
{	
	CString  str;

	strRet  = "";
	if (fsize >= 1048576)	
		{
		str.Format(L"%d", fsize / 1048576);
		strRet = str;
		}
	else if (fsize >= 1024)	
		{
		str.Format(L"%d KB", fsize / 1024);		
		strRet += str;
		}
	else
		{
		str.Format(L"%d Byte", fsize);
		strRet += str;
		}

	return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -