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

📄 phonerecview.cpp

📁 VC++开发的一个电话录音程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			btnarray[ i ]->SetIcon( m_LargeImageList.ExtractIcon( 6 ) );
		}
	}
	
	//btnarray[ 16 ]->SetIcon( m_LargeImageList.ExtractIcon( 6 ) );
}

/////////////////////////////////////////////////////////////////////////////
// CPhoneRecView printing

BOOL CPhoneRecView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CPhoneRecView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CPhoneRecView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CPhoneRecView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
	// TODO: add customized printing code here
}

/////////////////////////////////////////////////////////////////////////////
// CPhoneRecView diagnostics

#ifdef _DEBUG
void CPhoneRecView::AssertValid() const
{
	CFormView::AssertValid();
}

void CPhoneRecView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CPhoneRecDoc* CPhoneRecView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPhoneRecDoc)));
	return (CPhoneRecDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CPhoneRecView message handlers

void CPhoneRecView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	COLORREF color( RGB( 109, 158, 231 ) ); // 设置背景颜色
	CBrush brush;
	RECT rect;
 
 	GetClientRect( &rect );

	dc.SetBkMode( TRANSPARENT );		
	brush.CreateSolidBrush( color );
	dc.SelectObject( &brush );	
	dc.FillRect( &rect, &brush );
	ReleaseDC( &dc );

}

void CPhoneRecView::OnDestroy() 
{
	g_dbCust.Close();
	m_device.CloseDevice();
	CFormView::OnDestroy();
}

BEGIN_EVENTSINK_MAP(CPhoneRecView, CFormView)
    //{{AFX_EVENTSINK_MAP(CPhoneRecView)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 1 /* State */, OnStatePhonicctrl, VTS_I4 VTS_I4 VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 4 /* CallIn */, OnCallInPhonicctrl, VTS_I4 VTS_I4 VTS_BSTR VTS_BSTR)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 2 /* DeviceTimer */, OnDeviceTimerPhonicctrl, VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 3 /* Idle */, OnIdlePhonicctrl, VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 5 /* Answer */, OnAnswerPhonicctrl, VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 6 /* CallOutFinish */, OnCallOutFinishPhonicctrl, VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 15 /* CallFail */, OnCallFailPhonicctrl, VTS_I4 VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 7 /* Hangup */, OnHangupPhonicctrl, VTS_I4 VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 8 /* DTMF */, OnDTMFPhonicctrl, VTS_I4 VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 10 /* RecordEnd */, OnRecordEndPhonicctrl, VTS_I4 VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 9 /* PlayEnd */, OnPlayEndPhonicctrl, VTS_I4 VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 13 /* Flash */, OnFlashPhonicctrl, VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 18 /* Ring */, OnRingPhonicctrl, VTS_I4 VTS_I4)
	ON_EVENT(CPhoneRecView, IDC_PHONICCTRL, 21 /* Hanging */, OnHangingPhonicctrl, VTS_I4 VTS_I4)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CPhoneRecView::OnStatePhonicctrl(long channelType, long channelID, long newChannelState, long oldChannelState) 
{	
	GetChannelObject( channelType, channelID )->OnState( newChannelState );
}

void CPhoneRecView::OnCallInPhonicctrl(long channelType, long channelID, LPCTSTR callerID, LPCTSTR phoneNumber) 
{
	CChannel * pChannel = NULL;
	pChannel = GetChannelObject( channelType, channelID );
	pChannel->OnCallIn( (char*)callerID, ( char* )phoneNumber );

	m_pFlashArray[ pChannel->GetLineID() ]->FlashText( FALSE );
	m_pFlashArray[ pChannel->GetLineID() ]->SetText( callerID );
	m_pFlashArray[ pChannel->GetLineID() ]->SetTextColor(RGB( 0,255,0));
	m_pFlashArray[ pChannel->GetLineID() ]->FlashText( TRUE );
	m_pFlashArray[ pChannel->GetLineID() ]->SetFontBold(TRUE);
		
	//GetChannelObject( channelType, channelID )->OnCallIn( (char*)callerID, ( char* )phoneNumber );
}

void CPhoneRecView::OnDeviceTimerPhonicctrl(long channelType, long channelID) 
{
	CChannel * pChan = GetChannelObject( channelType, channelID );
	if( pChan)
		pChan->OnDeviceTimer(  );
}

void CPhoneRecView::OnIdlePhonicctrl(long channelType, long channelID) 
{
	CChannel * pChan = GetChannelObject( channelType, channelID );
	if( pChan)
	 pChan->OnIdle( );
}

void CPhoneRecView::OnAnswerPhonicctrl(long channelType, long channelID) 
{
	CChannel * pChan = GetChannelObject( channelType, channelID );
	if( pChan)
	 pChan->OnAnswer( );		
}

void CPhoneRecView::OnCallOutFinishPhonicctrl(long channelType, long channelID) 
{
	CChannel * pChan = GetChannelObject( channelType, channelID );
	if( pChan)
	 pChan->OnCallOutFinish();			
}

void CPhoneRecView::OnCallFailPhonicctrl(long channelType, long channelID, long cause) 
{
	CChannel * pChan = GetChannelObject( channelType, channelID );
	if( pChan)
	 pChan->OnCallFail( cause );
}

void CPhoneRecView::OnHangupPhonicctrl(long channelType, long channelID, long cause) 
{
		CChannel * pChan = GetChannelObject( channelType, channelID );
	if( pChan)
	 pChan->OnHangup( cause );
}

void CPhoneRecView::OnDTMFPhonicctrl(long channelType, long channelID, long dtmfCode) 
{
	char tempdtmfCode = ( char )dtmfCode;

	CChannel * pChannel = NULL;
	pChannel = GetChannelObject( channelType, channelID );
	pChannel->OnDTMF( tempdtmfCode );
	
	m_pFlashArray[ pChannel->GetLineID() ]->FlashText( FALSE );
	m_pFlashArray[ pChannel->GetLineID() ]->SetText( pChannel->GetDTMF() );
	m_pFlashArray[ pChannel->GetLineID() ]->SetTextColor(RGB( 0,255,0));
	m_pFlashArray[ pChannel->GetLineID() ]->FlashText( TRUE );
	m_pFlashArray[ pChannel->GetLineID() ]->SetFontBold(TRUE);
	
//	GetChannelObject( channelType, channelID )->OnDTMF( tempdtmfCode );
}

void CPhoneRecView::OnRecordEndPhonicctrl(long channelType, long channelID, long completeSize) 
{
	GetChannelObject( channelType, channelID )->OnRecordEnd( completeSize );
}

void CPhoneRecView::OnPlayEndPhonicctrl(long channelType, long channelID, long completeSize) 
{
	CChannel* pChan = GetChannelObject( channelType, channelID );
	if( pChan)
		pChan->OnPlayEnd( completeSize );
}

void CPhoneRecView::OnFlashPhonicctrl(long channelType, long channelID) 
{
	GetChannelObject( channelType, channelID )->OnFlash();
}

void CPhoneRecView::OnRingPhonicctrl(long channelType, long channelID) 
{
	CChannel* pChannel = GetChannelObject( channelType, channelID );
	if( pChannel )
	pChannel->OnRing();
}

void CPhoneRecView::OnHangingPhonicctrl(long channelType, long channelID) 
{
//	GetChannelObject( channelType, channelID )->OnHanging();
	CChannel* pChannel = GetChannelObject( channelType, channelID );
	if( pChannel )
		pChannel->OnHanging();
}

//启动关闭监听
void CPhoneRecView::OnCheck1() 
{
	CString str;
	const MSG* pMsg = GetCurrentMessage();
	
	CWnd * hwnd;
	//this->GetDlgItemText(pMsg->wParam,str);
	hwnd = this->GetDlgItem(pMsg->wParam);
	int iCurrentBtn =  this->GetCurrentHitButtonSerial(hwnd->m_hWnd);
	
	CChannel * pDestChannel = GetChannelObject( 0 );
	
	if (m_nPushedBtnIdx >=  0  ) //前一个checkBox停止监听,并且弹起
	{
		m_pButtonArray[ m_nPushedBtnIdx ]->SetCheck( 0 );

		if ( pDestChannel )
		{
			pDestChannel->BreakListen();
		}
	}

	if( iCurrentBtn == -1 || m_nPushedBtnIdx ==  iCurrentBtn)
	{
		m_nPushedBtnIdx = -1;
		return;
	}
	else
	{
		m_nPushedBtnIdx =  iCurrentBtn;	
		CChannel * pSrcChannel = GetChannelObject( m_nPushedBtnIdx );
		m_pButtonArray[ m_nPushedBtnIdx ]->SetCheck( 1 );	
		if( pSrcChannel && pDestChannel )
		{
			if(pSrcChannel->GetChannelType() == CH_MAX ||  pDestChannel->GetChannelType() == CH_MAX )
				return;
			pDestChannel->ListenTo( pSrcChannel->GetChannelType(), pSrcChannel->GetChannelID() );
		}	
	}

	/*
	if( m_nPushedBtnIdx == nButtonID - IDC_CHECK1 + 1 ) //如果同一个checkbox停止监听,并且弹起
	{
		m_nPushedBtnIdx = -1;
		if( pDestChannel )
		{
			pDestChannel->BreakListen();
		}
	}
	else
	{
		//监听被选中的checkBox
		m_nPushedBtnIdx = nButtonID - IDC_CHECK1 + 1;	
		CChannel * pSrcChannel = GetChannelObject( m_nPushedBtnIdx );
		m_pButtonArray[ m_nPushedBtnIdx ]->SetCheck( 1 );	
		if( pSrcChannel && pDestChannel )
		{
			if(pSrcChannel->GetChannelType() == CH_MAX ||  pDestChannel->GetChannelType() == CH_MAX )
				return;
			pDestChannel->ListenTo( pSrcChannel->GetChannelType(), pSrcChannel->GetChannelID() );
		}	
	}
	*/

}
 
int CPhoneRecView::GetCurrentHitButtonSerial(HANDLE hHandle)
{

	for( int j = 0 ; j < 32 ; j++ )
	{
		if( m_pButtonArray[ j ]->m_hWnd  == hHandle)
			return j;
	}
	return -1;
}

⌨️ 快捷键说明

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