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

📄 recorddlg.cpp

📁 对所有的客户电话都录音
💻 CPP
字号:
// RecordDlg.cpp : implementation file
//

#include "stdafx.h"
#include "PhoneRecord.h"
#include "RecordDlg.h"
#include "ADOConn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include <MMSystem.h>
#pragma comment(lib, "winmm.lib")
/////////////////////////////////////////////////////////////////////////////
// CRecordDlg dialog


CRecordDlg::CRecordDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CRecordDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRecordDlg)
	m_Name = _T("");
	m_Path = _T("");
	//}}AFX_DATA_INIT
}


void CRecordDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRecordDlg)
	DDX_Control(pDX, IDC_BUTPLAY, m_ButPlay);
	DDX_Control(pDX, IDC_BUTMODPATH, m_ButModPath);
	DDX_Control(pDX, IDC_BUTDEL, m_ButDel);
	DDX_Control(pDX, IDC_LIST1, m_Grid);
	DDX_Text(pDX, IDC_EDIT1, m_Name);
	DDX_Text(pDX, IDC_EDIT2, m_Path);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRecordDlg, CDialog)
	//{{AFX_MSG_MAP(CRecordDlg)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_BN_CLICKED(IDC_BUTMODPATH, OnButmodpath)
	ON_BN_CLICKED(IDC_BUTDEL, OnButdel)
	ON_BN_CLICKED(IDC_BUTPLAY, OnButplay)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRecordDlg message handlers

BOOL CRecordDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	//设置列表视图的扩展风格
	m_Grid.SetExtendedStyle(LVS_EX_FLATSB  //扁平风格显示滚动条
		|LVS_EX_FULLROWSELECT              //允许整行选中
		|LVS_EX_HEADERDRAGDROP             //允许整列拖动
		|LVS_EX_ONECLICKACTIVATE           //单击选中项
		|LVS_EX_GRIDLINES);                //画出网格线
	//设置表头
	m_Grid.InsertColumn(0,"文件名称",LVCFMT_LEFT,100,0); 
	m_Grid.InsertColumn(1,"文件路径",LVCFMT_LEFT,200,1); 
	m_Grid.InsertColumn(2,"录制时间",LVCFMT_LEFT,100,2);
	AddToGrid();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CRecordDlg::AddToGrid()
{
	ADOConn m_AdoConn;
	m_AdoConn.OnInitADOConn();
	CString sql;
	sql.Format("select * from tb_record ");
	m_AdoConn.m_pRecordset = m_AdoConn.GetRecordSet((_bstr_t)sql);
	int i = 0;
	while(!m_AdoConn.m_pRecordset->adoEOF)
	{
		m_Grid.InsertItem(i,"");
		m_Grid.SetItemText(i,0,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("文件名称"));
		m_Grid.SetItemText(i,1,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("文件路径"));
		m_Grid.SetItemText(i,2,(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect("录制时间"));
		m_AdoConn.m_pRecordset->MoveNext();
		i++;
	}
	m_AdoConn.ExitConnect();
}

void CRecordDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int pos = m_Grid.GetSelectionMark(); //获取选中项索引
	m_Name  = m_Grid.GetItemText(pos,0); //设置文件名称编辑框中的显示文本
	m_Path  = m_Grid.GetItemText(pos,1); //设置文件路径编辑框中的显示文本
	UpdateData(FALSE);
	*pResult = 0;
}

void CRecordDlg::OnButmodpath() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_Name.IsEmpty())
	{
		MessageBox("文件名不能为空!");
		return;
	}
	CString strText;
	CString ReturnPach;
	TCHAR szPath[_MAX_PATH];
	BROWSEINFO bi;
	bi.hwndOwner             = NULL;
	bi.pidlRoot              = NULL;
	bi.lpszTitle             = _T("请选择备份文件夹");
	bi.pszDisplayName        = szPath;
	bi.ulFlags               = BIF_RETURNONLYFSDIRS;
	bi.lpfn                  = NULL;
	bi.lParam                = NULL;
	LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi);
	if(pItemIDList)
	{
		if(SHGetPathFromIDList(pItemIDList,szPath))
			ReturnPach = szPath;	
	}
	else
	{
		ReturnPach = "";
	}
	strText = ReturnPach;
	if(strText.Right(1) != "\\")
	{
		strText += "\\";
	}
	BOOL ret = MoveFile(m_Path+m_Name,strText+m_Name);
	if(ret)
	{
		ADOConn m_ADOConn;
		m_ADOConn.OnInitADOConn();
		CString sql;
		sql.Format("update tb_record set 文件路径='%s' where 文件名称='%s'",strText,m_Name);
		m_ADOConn.ExecuteSQL((_bstr_t)sql);
		m_ADOConn.ExitConnect();
		m_Grid.DeleteAllItems();
		AddToGrid();
		m_Path = strText;
		UpdateData(FALSE);
	}
	else
		MessageBox("文件路径修改失败");
}

void CRecordDlg::OnButdel() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_Name.IsEmpty() || m_Path.IsEmpty())
	{
		MessageBox("文件名或和文件路径不能为空!");
		return;
	}
	BOOL ret = DeleteFile(m_Path+m_Name);
	if(ret)
	{
		ADOConn m_ADOConn;
		m_ADOConn.OnInitADOConn();
		CString sql;
		sql.Format("delete from tb_record where 文件名称='%s'",m_Name);
		m_ADOConn.ExecuteSQL((_bstr_t)sql);
		m_ADOConn.ExitConnect();
		m_Grid.DeleteAllItems();
		AddToGrid();
	}
	else
		MessageBox("删除失败");
}

void CRecordDlg::OnButplay() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_Name.IsEmpty() || m_Path.IsEmpty())
	{
		MessageBox("文件名或和文件路径不能为空!");
		return;
	}
	MCIDEVICEID m_nDeviceID;
	MCIDEVICEID m_nElementID;
	MCI_OPEN_PARMS mciOpenParms;

	mciOpenParms.lpstrDeviceType=(LPSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
	mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID
		| MCI_WAIT,(DWORD)(LPVOID)&mciOpenParms);
	m_nDeviceID=mciOpenParms.wDeviceID;

	MCI_OPEN_PARMS mciOpen;
	memset(&mciOpen,0,sizeof(MCI_OPEN_PARMS));
	mciOpen.lpstrElementName = m_Path + m_Name;
	mciSendCommand(m_nDeviceID,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpen);
	m_nElementID=mciOpen.wDeviceID;

	MCI_PLAY_PARMS mciPlay;
	mciPlay.dwCallback=(DWORD)this->GetSafeHwnd();
	mciSendCommand(m_nElementID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciPlay);
}

⌨️ 快捷键说明

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