www.pudn.com > CirMMI.rar > CommunicateStatic.h


#if !defined(AFX_COMMUNICATESTATIC_H__031848F1_FC95_4576_8252_FF36D4C46F71__INCLUDED_) 
#define AFX_COMMUNICATESTATIC_H__031848F1_FC95_4576_8252_FF36D4C46F71__INCLUDED_ 
 
#if _MSC_VER >= 1000 
#pragma once 
#endif // _MSC_VER >= 1000 
// CommunicateStatic.h : header file 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// CCommunicateStatic window 
 
class CCommunicateStatic : public CStatic 
{ 
// Construction 
public: 
	CCommunicateStatic(); 
 
// Attributes 
public: 
 
// Operations 
public: 
 
// Overrides 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CCommunicateStatic) 
	//}}AFX_VIRTUAL 
 
// Implementation 
public: 
	void M450Draw(CDC *pDC); 
	void GsmrDraw(CDC *pDC); 
	void MySetText(const CString& strText,COLORREF cr,BOOL bFlash=FALSE); 
	CString MyGetText(){return m_strText;} 
	void SwitchToIdle() 
	{ 
	m_workmode=M_IDLE; 
	m_crText=g_CommonSet.crSecondText; 
	m_strText=_T("欢迎使用"); 
	m_bLightSwitch=FALSE; 
	Invalidate(FALSE); 
	} 
	void RefreshConvas(BOOL bErase = TRUE){if(::IsWindow(m_hWnd)) Invalidate(bErase);} 
 
	virtual ~CCommunicateStatic(); 
 
	// Generated message map functions 
protected: 
	//{{AFX_MSG(CCommunicateStatic) 
	afx_msg void OnPaint(); 
	//}}AFX_MSG 
 
	DECLARE_MESSAGE_MAP() 
private: 
 
	 
	//450m 
	HICON m_hIconRevDownUp,m_hIconRevDown,m_hIconRevUp,m_hIconSend,m_hIconZero,m_hIconSendZero; 
	HICON m_hIconSpeaker,m_hIconHandset; 
 
	HICON	m_hIconUpLink; 
	HICON	m_hIconDownLink; 
 
	CFont m_ftIndicationText; 
	 
	BOOL m_bLightSwitch; //开灯,关灯 
	BOOL m_buRevSignal,m_bdRevSignal; 
	BOOL m_bSendSignal; 
	BOOL m_bShuanggong;//双工,单工 
	 
 
	COLORREF m_crBorder; 
	CPoint	m_450SendSignalPoint; 
	CPoint  m_450RevSignalPoint; 
	CRect	m_M450TextCanvasRect; 
 
	 
 
private: 
	//gsmr 
	HICON m_hIconTalk,m_hIconNoTalk,m_hIconBusy,m_hIconTea; 
	INT m_iTalkState; 
	CRect m_GsmrIndicationRect; 
	CRect m_GsmrTextCanvasRect; 
	CArray m_CallAr; 
	INT m_iCallSel; 
	CFont m_ftCallList; 
	 
private: 
	//common 
	CBitmap m_bitmap; 
	INT m_iCallDir; 
 
public: 
	void Enter450M(BOOL bShuanggong=FALSE,INT iCallDir=CALL_OUT) 
	{ 
		 
		m_workmode=M_TALK; 
		m_bLightSwitch=TRUE; 
		m_bShuanggong=bShuanggong; 
		m_iCallDir=iCallDir; 
		if(bShuanggong) 
		{ 
			EnableSendLight(TRUE); 
		} 
	} 
	 
	 
	/* 
	void EnableRevLight(BOOL be=TRUE) 
	{ 
		if(m_workmode==M_TALK) 
		{ 
			m_bRevSignal=be; 
			GetDC()->FillSolidRect(m_450RevSignalPoint.x,m_450RevSignalPoint.y,16,16,g_CommonSet.crMainBk); 
			GetDC()->DrawIcon(m_450RevSignalPoint,be?(m_bShuanggong?m_hIconRevUp:m_hIconRevDown):m_hIconZero); 
 
		} 
	} 
	*/ 
 
	void EnableRevLight(BOOL bed,BOOL beu) 
	{ 
		//if(m_workmode==M_TALK) 
		{ 
			m_buRevSignal=beu; 
			m_bdRevSignal=bed; 
 
			/* 
			GetDC()->FillSolidRect(m_450RevSignalPoint.x,m_450RevSignalPoint.y,16,16,g_CommonSet.crMainBk); 
			GetDC()->DrawIcon(m_450RevSignalPoint,beu?m_hIconRevUp:(bed?m_hIconRevDown:m_hIconZero)); 
			*/ 
			//* 
			if(IsWindowVisible()) 
			{ 
			CClientDC dc(this); 
			dc.FillSolidRect(m_450RevSignalPoint.x,m_450RevSignalPoint.y,16,16,m_ctBk); 
			if(bed && beu) 
				dc.DrawIcon(m_450RevSignalPoint,m_hIconRevDownUp);	 
			else 
				dc.DrawIcon(m_450RevSignalPoint,beu?m_hIconRevUp:(bed?m_hIconRevDown:m_hIconZero));	 
			 
			} 
			//*/ 
		} 
	} 
 
 
	void EnableSendLight(BOOL be=TRUE) 
	{ 
		//if(m_workmode==M_TALK) 
		{ 
			m_bSendSignal=be; 
			 
			/* 
			GetDC()->FillSolidRect(m_450SendSignalPoint.x,m_450SendSignalPoint.y,16,16,g_CommonSet.crMainBk); 
			GetDC()->DrawIcon(m_450SendSignalPoint,(be||m_bShuanggong )?m_hIconSend:m_hIconZero); 
			*/ 
			//* 
			if(IsWindowVisible()) 
			{ 
			CClientDC dc(this); 
			dc.FillSolidRect(m_450SendSignalPoint.x,m_450SendSignalPoint.y,16,16,m_ctBk); 
			dc.DrawIcon(m_450SendSignalPoint,(be||m_bShuanggong )?m_hIconSend:m_hIconSendZero); 
			} 
			//*/ 
			 
 
		} 
	} 
	void Exit450M() 
	{ 
		m_workmode=M_IDLE; 
		m_bLightSwitch=FALSE; 
		m_bShuanggong=FALSE; 
		m_buRevSignal=FALSE; 
		m_bdRevSignal=FALSE; 
		m_bSendSignal=FALSE; 
	 
		/* 
		GetDC()->FillSolidRect(m_450RevSignalPoint.x,m_450RevSignalPoint.y,16,16,g_CommonSet.crMainBk); 
		GetDC()->FillSolidRect(m_450SendSignalPoint.x,m_450SendSignalPoint.y,16,16,g_CommonSet.crMainBk); 
		GetDC()->DrawIcon(m_450RevSignalPoint,m_hIconZero); 
		GetDC()->DrawIcon(m_450SendSignalPoint,m_hIconZero); 
 
		*/ 
		 
		//* 
		if(IsWindowVisible()) 
		{ 
		CClientDC dc(this);		 
		dc.FillSolidRect(m_450RevSignalPoint.x,m_450RevSignalPoint.y,16,16,m_ctBk); 
		dc.FillSolidRect(m_450SendSignalPoint.x,m_450SendSignalPoint.y,16,16,m_ctBk); 
		dc.DrawIcon(m_450RevSignalPoint,m_hIconZero); 
		dc.DrawIcon(m_450SendSignalPoint,m_hIconSendZero); 
		} 
		//*/ 
		 
 
	} 
 
 
	 
	//gsmr 
	void EnterGsmr(INT iCallDir=CALL_OUT) 
	{		 
		m_workmode=M_TALK; 
		m_iCallDir=iCallDir; 
		m_iCallSel=0; 
		EnableTalkState(-1); 
 
	} 
	void ExitGsmr() 
	{ 
		m_workmode=M_IDLE; 
		EnableTalkState(-1); 
	} 
	 
	void FillTalkList(CArray *pCallAr); 
	void CCommunicateStatic::DrawTalkList(CDC *pDC); 
	void Scroll(BOOL bUp) 
	{ 
		int callsize=m_CallAr.GetSize(); 
		if(callsize > 0) 
		{ 
			if(bUp) 
			{ 
				m_iCallSel--;		 
				if(m_iCallSel<0) 
					m_iCallSel=callsize-1; 
			} 
			else 
			{ 
				m_iCallSel++;	 
				if(m_iCallSel >= callsize) 
					m_iCallSel=0; 
			} 
 
			Invalidate(FALSE); 
 
		} 
			 
	} 
 
	INT GetCallSel()const { return (m_iCallSel>=0 && m_iCallSel