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