www.pudn.com > dialogic_IVR.rar > PaneDlg2.cpp


// PaneDlg2.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "AI2001.h" 
#include "PaneDlg2.h" 
#include "AI2001Dlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CPaneDlg2 dialog 
extern HICON	hIcon[8]; 
extern int m_ChannelStatus[1441]; 
extern int iDrawFlag; 
extern int m_iStatusNo; 
 
extern int m_iCurrNo; 
extern int m_iTotal; 
 
 
CPaneDlg2::CPaneDlg2(CWnd* pParent /*=NULL*/) 
	: CDialog(CPaneDlg2::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CPaneDlg2) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
 
void CPaneDlg2::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CPaneDlg2) 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CPaneDlg2, CDialog) 
	//{{AFX_MSG_MAP(CPaneDlg2) 
	ON_WM_PAINT() 
	ON_WM_RBUTTONDOWN() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPaneDlg2 message handlers 
 
void CPaneDlg2::OnPaint()  
{ 
	CPaintDC dc(this); // device context for painting 
	 
	// TODO: Add your message handler code here 
	 
	// Do not call CDialog::OnPaint() for painting messages 
	dc.SetMapMode(MM_ANISOTROPIC); 
	dc.SetWindowExt(400,400); 
	dc.SetViewportExt(dc.GetDeviceCaps(LOGPIXELSX), 
	dc.GetDeviceCaps(LOGPIXELSY)); 
	int i,j,iChannelNo; 
	int iResult,x,y; 
	switch(iDrawFlag)       //0:初始状态 1:更改局部状态-offhook2onhook 2:更改局部状态-onhook2offhook 3.更改局部状态-err status  
	{ 
		case 0: 
			for(i=0;i<12;i++) 
				for(j=0;j<30;j++) 
				{ 
					iChannelNo = i*30+j+1 + 360; 
					switch(m_ChannelStatus[iChannelNo]) 
					{ 
						case 0: 
							dc.DrawIcon(BEGIN_X+j*INTERVAL_X, BEGIN_Y+i*INTERVAL_Y, hIcon[0]); 
							break; 
						case 1: 
							dc.DrawIcon(BEGIN_X+j*INTERVAL_X, BEGIN_Y+i*INTERVAL_Y, hIcon[1]); 
							break; 
						case 2: 
							dc.DrawIcon(BEGIN_X+j*INTERVAL_X, BEGIN_Y+i*INTERVAL_Y, hIcon[2]); 
							break; 
						case 3: 
							dc.DrawIcon(BEGIN_X+j*INTERVAL_X, BEGIN_Y+i*INTERVAL_Y, hIcon[3]); 
							break; 
					} 
				} 
 
 
			iDrawFlag = 4; 
			break; 
		case 1: 
			iResult = ChannelNoToPoint(m_iStatusNo-360,x,y); 
			if (iResult == 0 && m_iStatusNo>360 && m_iStatusNo<=720) dc.DrawIcon(x, y, hIcon[1]); 
			iDrawFlag=4; 
			break; 
		case 2: 
			iResult = ChannelNoToPoint(m_iStatusNo-360,x,y); 
			if (iResult == 0 && m_iStatusNo>360 && m_iStatusNo<=720) dc.DrawIcon(x, y, hIcon[2]); 
			iDrawFlag=4; 
			break; 
		case 3: 
			iResult = ChannelNoToPoint(m_iStatusNo-360,x,y); 
			if (iResult == 0 && m_iStatusNo>360 && m_iStatusNo<=720) dc.DrawIcon(x, y, hIcon[3]); 
			iDrawFlag=4; 
			break; 
	} 
} 
 
void CPaneDlg2::OnRButtonDown(UINT nFlags, CPoint point)  
{ 
	// TODO: Add your message handler code here and/or call default 
	m_iCurrNo = PointToChannelNo(point) + 360; 
	if (m_iCurrNo >360 && (m_iCurrNo <= m_iTotal))  
	{ 
		CMenu menu; 
		CRect rect; 
		this->GetWindowRect(rect); 
		menu.LoadMenu(IDR_MYMENU); 
		 
		char szTemp[20]; 
		sprintf(szTemp,"通道号:%d",m_iCurrNo); 
		menu.ModifyMenu(0, MF_BYCOMMAND, 0, szTemp); 
 
		menu.EnableMenuItem(ID_MENUITEM_ONHOOK,MF_ENABLED); 
		if (m_ChannelStatus[m_iCurrNo] != 2) 
			menu.EnableMenuItem(ID_MENUITEM_ONHOOK,MF_GRAYED); 
		menu.EnableMenuItem(ID_MENUITEM_RESET,MF_ENABLED); 
		if (m_ChannelStatus[m_iCurrNo] != 3) 
			menu.EnableMenuItem(ID_MENUITEM_RESET,MF_GRAYED); 
		menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,rect.left+point.x,rect.top+point.y,this); 
	} 
		 
	CDialog::OnRButtonDown(nFlags, point); 
}