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

📄 phonerecview.cpp

📁 VC++开发的一个电话录音程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include "PhoneRec.h"
#include "PhoneRecDoc.h"
#include "PhoneRecView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

CPhoneRecView *	g_pMgr = NULL;
CString g_strReSavePath;
CDatabase g_dbCust;	
int g_serildata;

IMPLEMENT_DYNCREATE( CPhoneRecView, CFormView )

BEGIN_MESSAGE_MAP(CPhoneRecView, CFormView)
	//{{AFX_MSG_MAP(CPhoneRecView)
	ON_WM_PAINT()
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_CHECK0, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK1, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK2, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK3, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK4, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK5, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK6, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK7, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK8, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK9, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK10, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK11, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK12, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK13, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK14, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK15, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK16, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK17, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK18, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK19, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK20, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK21, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK22, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK23, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK31, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK24, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK25, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK26, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK27, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK28, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK29, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK30, OnCheck1)
	//}}AFX_MSG_MAP
	ON_COMMAND( ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND( ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND( ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()


CPhoneRecView::CPhoneRecView()
	: CFormView(CPhoneRecView::IDD)
{
	m_nPushedBtnIdx = -1;
	g_pMgr =  this;
}

CPhoneRecView::~CPhoneRecView()
{
/*	CChannel * pChan;
	for( int i = m_LineArray.GetSize() -1 ; i>=0  ; i--)
	{
		pChan = m_LineArray.GetAt(i);
		if( pChan)
		{
			delete pChan;
		}
	}
*/
}

void CPhoneRecView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPhoneRecView)
	DDX_Control(pDX, IDC_CHECK0, m_btn0);
	DDX_Control(pDX, IDC_PHONICCTRL, m_device);
	DDX_Control(pDX, IDC_CHECK1, m_btn1);
	DDX_Control(pDX, IDC_CHECK10, m_btn10);
	DDX_Control(pDX, IDC_CHECK11, m_btn11);
	DDX_Control(pDX, IDC_CHECK12, m_btn12);
	DDX_Control(pDX, IDC_CHECK13, m_btn13);
	DDX_Control(pDX, IDC_CHECK14, m_btn14);
	DDX_Control(pDX, IDC_CHECK15, m_btn15);
	DDX_Control(pDX, IDC_CHECK16, m_btn16);
	DDX_Control(pDX, IDC_CHECK17, m_btn17);
	DDX_Control(pDX, IDC_CHECK18, m_btn18);
	DDX_Control(pDX, IDC_CHECK19, m_btn19);
	DDX_Control(pDX, IDC_CHECK2, m_btn2);
	DDX_Control(pDX, IDC_CHECK20, m_btn20);
	DDX_Control(pDX, IDC_CHECK21, m_btn21);
	DDX_Control(pDX, IDC_CHECK22, m_btn22);
	DDX_Control(pDX, IDC_CHECK23, m_btn23);
	DDX_Control(pDX, IDC_CHECK24, m_btn24);
	DDX_Control(pDX, IDC_CHECK25, m_btn25);
	DDX_Control(pDX, IDC_CHECK26, m_btn26);
	DDX_Control(pDX, IDC_CHECK27, m_btn27);
	DDX_Control(pDX, IDC_CHECK28, m_btn28);
	DDX_Control(pDX, IDC_CHECK29, m_btn29);
	DDX_Control(pDX, IDC_CHECK3, m_btn3);
	DDX_Control(pDX, IDC_CHECK30, m_btn30);
	DDX_Control(pDX, IDC_CHECK31, m_btn31);
	DDX_Control(pDX, IDC_CHECK4, m_btn4);
	DDX_Control(pDX, IDC_CHECK5, m_btn5);
	DDX_Control(pDX, IDC_CHECK6, m_btn6);
	DDX_Control(pDX, IDC_CHECK7, m_btn7);
	DDX_Control(pDX, IDC_CHECK8, m_btn8);
	DDX_Control(pDX, IDC_CHECK9, m_btn9);
	DDX_Control(pDX, IDC_CALLER0, m_flashCaller0);
	DDX_Control(pDX, IDC_CALLER1, m_flashCaller1);
	DDX_Control(pDX, IDC_CALLER10, m_flashCaller10);
	DDX_Control(pDX, IDC_CALLER11, m_flashCaller11);
	DDX_Control(pDX, IDC_CALLER12, m_flashCaller12);
	DDX_Control(pDX, IDC_CALLER13, m_flashCaller13);
	DDX_Control(pDX, IDC_CALLER14, m_flashCaller14);
	DDX_Control(pDX, IDC_CALLER15, m_flashCaller15);
	DDX_Control(pDX, IDC_CALLER16, m_flashCaller16);
	DDX_Control(pDX, IDC_CALLER17, m_flashCaller17);
	DDX_Control(pDX, IDC_CALLER18, m_flashCaller18);
	DDX_Control(pDX, IDC_CALLER19, m_flashCaller19);
	DDX_Control(pDX, IDC_CALLER2, m_flashCaller2);
	DDX_Control(pDX, IDC_CALLER20, m_flashCaller20);
	DDX_Control(pDX, IDC_CALLER21, m_flashCaller21);
	DDX_Control(pDX, IDC_CALLER22, m_flashCaller22);
	DDX_Control(pDX, IDC_CALLER23, m_flashCaller23);
	DDX_Control(pDX, IDC_CALLER24, m_flashCaller24);
	DDX_Control(pDX, IDC_CALLER25, m_flashCaller25);
	DDX_Control(pDX, IDC_CALLER26, m_flashCaller26);
	DDX_Control(pDX, IDC_CALLER27, m_flashCaller27);
	DDX_Control(pDX, IDC_CALLER28, m_flashCaller28);
	DDX_Control(pDX, IDC_CALLER29, m_flashCaller29);
	DDX_Control(pDX, IDC_CALLER3, m_flashCaller3);
	DDX_Control(pDX, IDC_CALLER30, m_flashCaller30);
	DDX_Control(pDX, IDC_CALLER31, m_flashCaller31);
	DDX_Control(pDX, IDC_CALLER4, m_flashCaller4);
	DDX_Control(pDX, IDC_CALLER5, m_flashCaller5);
	DDX_Control(pDX, IDC_CALLER6, m_flashCaller6);
	DDX_Control(pDX, IDC_CALLER7, m_flashCaller7);
	DDX_Control(pDX, IDC_CALLER8, m_flashCaller8);
	DDX_Control(pDX, IDC_CALLER9, m_flashCaller9);
	DDX_Control(pDX, IDC_PROJECT_NAME, m_flashProjectName);
	//}}AFX_DATA_MAP
}

BOOL CPhoneRecView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}


void CPhoneRecView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();

	g_dbCust.OpenEx( _T( "DSN=fiho;UID=;PWD=12345678",CDatabase::noOdbcDialog ) );
 
	CRecordset rs( &g_dbCust );
	CTime time = CTime::GetCurrentTime();
	CString strStartDate = time.Format("%Y-%m-%d");
	
	CString strSQL = "Select *  from RecordData Where StartDate = # " +strStartDate+ "#" +" order by StartDate ASC, StartTime ASC";
	rs.Open( CRecordset::dynaset, _T( strSQL ) );
	
	CString strSerialNo;
	while( !rs.IsEOF( ) )
	{
		rs.MoveLast();
		rs.GetFieldValue( "SerialNo", strSerialNo );
		break;
	}
	rs.Close(); 
	g_serildata = atoi( strSerialNo );

	/////////////////////////

	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

	//录音文件存放路径
	g_strReSavePath = GetReSaveHomePath();
	CheckCreateDir( g_strReSavePath );

	//工程文件名
	m_flashProjectName.SetBkColor( RGB( 109, 158, 231 ) );
	m_flashProjectName.SetTextColor( RGB( 200, 0, 0 ) );
	m_flashProjectName.SetFontSize( 35 );
	m_flashProjectName.SetFontName( "楷体_GB2312" );
	m_flashProjectName.SetFontBold( TRUE );
	char FilePathBuffer[200] = "";
	GetPrivateProfileString("title", "name", "",FilePathBuffer , 40 , GetConfigFilePath() );	
	m_flashProjectName.SetText(FilePathBuffer);

	//创建电话图标
	m_LargeImageList.Create(IDB_PHONEICONS, 32, 7, RGB(255, 255, 255));
	
	//将所有按钮变量赋予 CButtonST 数组
	CButtonST* btnarray[ 32 ] = { &m_btn0, &m_btn1, &m_btn2, &m_btn3, &m_btn4, &m_btn5, &m_btn6, &m_btn7, 
								&m_btn8, &m_btn9, &m_btn10, &m_btn11, &m_btn12, &m_btn13, &m_btn14, &m_btn15,
								&m_btn16, &m_btn17, &m_btn18, &m_btn19, &m_btn20, &m_btn21, &m_btn22, &m_btn23,
								&m_btn24, &m_btn25, &m_btn26, &m_btn27, &m_btn28, &m_btn29, &m_btn30, &m_btn31 };
	
	for( int j = 0 ; j < 32 ; j++ )
	{
		m_pButtonArray[ j ] = btnarray[ j ];
	}

	//来电显示部分
	CLabel*  bflash[ 32 ] = { &m_flashCaller0, &m_flashCaller1,&m_flashCaller2,&m_flashCaller3,&m_flashCaller4,&m_flashCaller5,&m_flashCaller6,&m_flashCaller7,&m_flashCaller8,
							  &m_flashCaller9,&m_flashCaller10,&m_flashCaller11,&m_flashCaller12,&m_flashCaller13, &m_flashCaller14,&m_flashCaller15,&m_flashCaller16,
								&m_flashCaller17,&m_flashCaller18,&m_flashCaller19,&m_flashCaller20,&m_flashCaller21,&m_flashCaller22,&m_flashCaller23,&m_flashCaller24,
								&m_flashCaller25,&m_flashCaller26,&m_flashCaller27,&m_flashCaller28,&m_flashCaller29,&m_flashCaller30,&m_flashCaller31};
	for( int k = 0 ; k < 32; k++ )
	{
		m_pFlashArray[ k ] = bflash[ k ];
		m_pFlashArray[ k ]->SetBkColor( RGB( 109, 158, 231 ) );
	}
		
		//设备部分
	m_device.OpenDevice();
	m_device.ShowWindow( FALSE );
			
	CChannel * pChannel;
	int iChannelType;
	int iLineCount = m_device.GetLineCount();
			
	//界面电话按钮图标处理
	for( int i = 0 ; i < 32; i++ )
	{
		iChannelType = m_device.GetChannelType( i );
		btnarray[i]->SetColor( CButtonST::BTNST_COLOR_BK_IN, RGB( 109, 158, 231 ));
		btnarray[i]->SetColor( CButtonST::BTNST_COLOR_BK_OUT, RGB( 109, 158, 231 ));
		btnarray[i]->SetColor( CButtonST::BTNST_COLOR_BK_FOCUS, RGB( 109, 158, 231  ));
		
		btnarray[i]->SetAlign( CButtonST::ST_ALIGN_VERT );
		btnarray[i]->SetTooltipText("监听本通道请按下");
	
				
		if ( i < iLineCount )//有效通道
		{
			switch( iChannelType )
			{
			case CH_HIGH_IMPEDANCE:
				pChannel = new CMonitorChannel(i, &m_device);
				btnarray[ i ]->SetWindowText( pChannel->m_strPhone );
				break;
			case CH_USER:
				pChannel = new CChannel( i, &m_device );
				break;
			case CH_ANALOG_TRUNK:
				pChannel = new CPhoneChannel(i, &m_device);
				btnarray[ i ]->SetWindowText( pChannel->m_strPhone );
				break;
			default:
				pChannel = new CChannel(i, &m_device);
				break;
				
			}
			m_LineArray.Add( pChannel );
			
			btnarray[i]->SetIcon( m_LargeImageList.ExtractIcon( pChannel->GetLineImage() ) );

			if( pChannel->GetChannelType() == CH_SPEAKER)
			{
				continue;
			}

			m_LineArray.m_bIsChannelArray = FALSE;

			m_ChannelArray[ pChannel->GetChannelType() ].Add(pChannel);
			m_ChannelArray[ pChannel->GetChannelType() ].m_bIsChannelArray = TRUE;

		}
		else //无效通道
		{

⌨️ 快捷键说明

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