📄 ipgatewaydlg.cpp
字号:
// IPGatewayDlg.cpp : implementation file
//
#include "stdafx.h"
#include "IPGateway.h"
#include "IPGatewayDlg.h"
#include "shpa3api.h"
#include "Big5EditionLab.h"
#include "EnglishEditionLab.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
DWORD g_dwLanguageConversion = 0;
DWORD g_dwCHINESE_SIMPLIFIED = MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED);
DWORD g_dwCHINESE_TRADITIONAL = MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_TRADITIONAL);
DWORD g_dwCHINESE_HONGKONG = MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_HONGKONG);
void SetEngWinLab(CDialog* pDlg,int itemnum,CString strin)
{
CWnd *pWnd=NULL;
pWnd=pDlg->GetDlgItem(itemnum);
pWnd->SetWindowText(strin);
}
/////////////////////////////////////////////////////////////////////////////
// CIPGatewayDlg dialog
CIPGatewayDlg::CIPGatewayDlg(CWnd* pParent /*=NULL*/)
: CDialog(CIPGatewayDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CIPGatewayDlg)
m_strErrMsg = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CIPGatewayDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CIPGatewayDlg)
DDX_Control(pDX, IDC_LIST_ANALOGCH, m_AnalogChList);
DDX_Control(pDX, IDC_LIST_SS1CH, m_SS1ChList);
DDX_Control(pDX, IDC_LIST_IPCH, m_IpChList);
DDX_Control(pDX, IDC_LIST_LOG, m_LogList);
DDX_Text(pDX, IDC_ERRMSG, m_strErrMsg);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CIPGatewayDlg, CDialog)
//{{AFX_MSG_MAP(CIPGatewayDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_TIMER()
ON_WM_DESTROY()
ON_BN_CLICKED(ID_DISCONNECT, OnDisconnect)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CIPGatewayDlg message handlers
BOOL CIPGatewayDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
g_dwLanguageConversion = GetThreadLocale();
if(g_dwLanguageConversion != g_dwCHINESE_SIMPLIFIED)
{
if(g_dwLanguageConversion == g_dwCHINESE_TRADITIONAL
||g_dwLanguageConversion == g_dwCHINESE_HONGKONG)
{
SetThreadLocale(MAKELANGID(LANG_CHINESE,SUBLANG_DEFAULT));
}
else
{
SetThreadLocale(MAKELANGID(LANG_ENGLISH,SUBLANG_DEFAULT));
}
InitLab();
}
if(!InitCtiSystem()) // initialize board
{
PostQuitMessage(0);
}
ProtocalType(); // H323 or SIP?
ReadIPAddress(); // read IP address book
InitAllChannel(); // initialize all channels
InitAnalogChListCtrl(); // update list control
InitSS1ChListCtrl();
InitIpChListCtrl();
InitLogListCtrl();
SetTimer(1000, 50, NULL); // 50ms
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CIPGatewayDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CIPGatewayDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
///////////////////////////////////////////////////////////////////////////////////////////////
// Initialize board
BOOL CIPGatewayDlg::InitCtiSystem()
{
if(SsmStartCti(_T("ShConfig.ini"), _T("ShIndex.ini")) || (SsmGetMaxCfgBoard() != SsmGetMaxUsableBoard()))
{
char szErrMsg[124];
SsmGetLastErrMsg(szErrMsg);
AfxMessageBox(szErrMsg, MB_OK) ;
return FALSE;
}
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
//
void CIPGatewayDlg::InitAllChannel()
{
CString cString;
int m = 0;
int n = 0;
int s = 0;
m_nTotalCh = SsmGetMaxCh();
for(int i = 0; i < m_nTotalCh; i++)
{
int iType = SsmGetChType(i);
if( iType >= 0 )
{
// Analog channel
if(0 == iType)
{
m_AnalogCh[m].nChId = i;
m_AnalogCh[m].Step = E_STATE_ANALOG_UNAVAILABLE;
m_AnalogCh[m].nIpCh = -1;
m_AnalogCh[m].iDirection = -1;
memset(m_AnalogCh[m].szCallerTelNumber, 0, 64);
memset(m_AnalogCh[m].szCalleeTelNumber, 0, 64);
m_AnalogCh[m].ulTimeOutCounter = 0;
m++;
}
// SS1 channel
else if(4 == iType)
{
int nDirection;
int iRet;
if(iRet = SsmGetAutoCallDirection(i, &nDirection))
{
m_SS1Ch[n].nChId = i;
m_SS1Ch[n].Step = E_STATE_SS1_UNAVAILABLE;
m_SS1Ch[n].nIpCh = -1;
m_SS1Ch[m].iDirection = -1;
m_SS1Ch[n].ulTimeOutCounter = 0;
m_SS1Ch[n].nCallCapability = nDirection;
memset(m_SS1Ch[n].szCallerTelNumber, 0, 64);
memset(m_SS1Ch[n].szCalleeTelNumber, 0, 64);
n++;
}
}
// IP channel
else if(m_nIPProtocol == iType)
{
m_IpCh[s].nChId = i;
m_IpCh[s].Step = E_STATE_IP_UNAVAILABLE;
m_IpCh[s].nLinkCh = -1;
m_IpCh[s].iDirection = -1;
memset(m_IpCh[s].szCallerTelNumber, 0, 64);
memset(m_IpCh[s].szCalleeTelNumber, 0, 64);
m_IpCh[s].ulTimeOutCounter = 0;
m_IpCh[s].ulCodecType = -1;
s++;
}
}//?end if( iType >= 0 )
else
{
char szErrMsg[124];
SsmGetLastErrMsg(szErrMsg);
AfxMessageBox(szErrMsg, MB_OK);
}
}
m_nTotalAnalogCh = m;
m_nTotalSS1Ch = n;
m_nTotalIpCh = s;
}
///////////////////////////////////////////////////////////////////////////////////////////////
// initialize Analog channel list control
void CIPGatewayDlg::InitAnalogChListCtrl()
{
CString cString;
m_AnalogChList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
COLORREF cr = 0x000000;
m_AnalogChList.SetBkColor(cr);
m_AnalogChList.SetTextBkColor(cr);
COLORREF cr1 = 0x00ff00;
m_AnalogChList.SetTextColor(cr1);
int ColumnWidth[7] = {60, 70, 200, 70, 80, 200, 200};
LV_COLUMN lvc;
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.iSubItem = 0;
cString.LoadString(IDS_GATEWAY2);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[0];
m_AnalogChList.InsertColumn(0, &lvc);
lvc.iSubItem = 1;
cString.LoadString(IDS_GATEWAY3);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[1];
m_AnalogChList.InsertColumn(1, &lvc);
lvc.iSubItem = 2;
cString.LoadString(IDS_GATEWAY4);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[2];
m_AnalogChList.InsertColumn(2, &lvc);
lvc.iSubItem = 3;
cString.LoadString(IDS_GATEWAY5);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[3];
m_AnalogChList.InsertColumn(3, &lvc);
lvc.iSubItem = 4;
cString.LoadString(IDS_GATEWAY6);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[4];
m_AnalogChList.InsertColumn(4, &lvc);
lvc.iSubItem = 5;
cString.LoadString(IDS_GATEWAY7);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[5];
m_AnalogChList.InsertColumn(5, &lvc);
lvc.iSubItem = 6;
cString.LoadString(IDS_GATEWAY8);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[6];
m_AnalogChList.InsertColumn(6, &lvc);
char szChId[3];
for(int i=0; i<m_nTotalAnalogCh; i++)
{
m_AnalogChList.InsertItem(i, _itoa(m_AnalogCh[i].nChId, szChId, 10));
cString.LoadString(IDS_GATEWAY9);
m_AnalogChList.SetItemText(i, 1, cString);
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
// initialize SS1 channel list control
void CIPGatewayDlg::InitSS1ChListCtrl()
{
CString cString;
m_SS1ChList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
COLORREF cr = 0x000000;
m_SS1ChList.SetBkColor(cr);
m_SS1ChList.SetTextBkColor(cr);
COLORREF cr1 = 0x00ff00;
m_SS1ChList.SetTextColor(cr1);
int ColumnWidth[8] = {60, 70, 200, 70, 80, 200, 200, 100};
LV_COLUMN lvc;
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.iSubItem = 0;
cString.LoadString(IDS_GATEWAY2);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[0];
m_SS1ChList.InsertColumn(0, &lvc);
lvc.iSubItem = 1;
cString.LoadString(IDS_GATEWAY3);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[1];
m_SS1ChList.InsertColumn(1, &lvc);
lvc.iSubItem = 2;
cString.LoadString(IDS_GATEWAY4);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[2];
m_SS1ChList.InsertColumn(2, &lvc);
lvc.iSubItem = 3;
cString.LoadString(IDS_GATEWAY5);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[3];
m_SS1ChList.InsertColumn(3, &lvc);
lvc.iSubItem = 4;
cString.LoadString(IDS_GATEWAY6);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[4];
m_SS1ChList.InsertColumn(4, &lvc);
lvc.iSubItem = 5;
cString.LoadString(IDS_GATEWAY7);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[5];
m_SS1ChList.InsertColumn(5, &lvc);
lvc.iSubItem = 6;
cString.LoadString(IDS_GATEWAY8);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[6];
m_SS1ChList.InsertColumn(6, &lvc);
lvc.iSubItem = 7;
cString.LoadString(IDS_GATEWAY63);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[7];
m_SS1ChList.InsertColumn(7, &lvc);
char szChId[3];
for(int i=0; i<m_nTotalSS1Ch; i++)
{
m_SS1ChList.InsertItem(i, _itoa(m_SS1Ch[i].nChId, szChId, 10));
cString.LoadString(IDS_GATEWAY70);
m_SS1ChList.SetItemText(i, 1, cString);
if(0 == m_SS1Ch[i].nCallCapability)
cString.LoadString(IDS_GATEWAY64);
if(1 == m_SS1Ch[i].nCallCapability)
cString.LoadString(IDS_GATEWAY65);
if(2 == m_SS1Ch[i].nCallCapability)
cString.LoadString(IDS_GATEWAY66);
if(3 == m_SS1Ch[i].nCallCapability)
cString.LoadString(IDS_GATEWAY67);
m_SS1ChList.SetItemText(i, 7, cString);
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
// initialize IP channel's list control
void CIPGatewayDlg::InitIpChListCtrl()
{
CString cString;
m_IpChList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
COLORREF cr = 0x000000;
m_IpChList.SetBkColor(cr);
m_IpChList.SetTextBkColor(cr);
COLORREF cr1 = 0x00ff00;
m_IpChList.SetTextColor(cr1);
int ColumnWidth[9] = {60, 70, 200, 70, 80, 200, 200, 70, 70};
LV_COLUMN lvc;
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.iSubItem = 0;
cString.LoadString(IDS_GATEWAY10);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[0];
m_IpChList.InsertColumn(0, &lvc);
lvc.iSubItem = 1;
cString.LoadString(IDS_GATEWAY11);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[1];
m_IpChList.InsertColumn(1, &lvc);
lvc.iSubItem = 2;
cString.LoadString(IDS_GATEWAY12);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[2];
m_IpChList.InsertColumn(2, &lvc);
lvc.iSubItem = 3;
cString.LoadString(IDS_GATEWAY13);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[3];
m_IpChList.InsertColumn(3, &lvc);
lvc.iSubItem = 4;
cString.LoadString(IDS_GATEWAY14);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[4];
m_IpChList.InsertColumn(4, &lvc);
lvc.iSubItem = 5;
cString.LoadString(IDS_GATEWAY15);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[5];
m_IpChList.InsertColumn(5, &lvc);
lvc.iSubItem = 6;
cString.LoadString(IDS_GATEWAY16);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[6];
m_IpChList.InsertColumn(6, &lvc);
lvc.iSubItem = 7;
cString.LoadString(IDS_GATEWAY17);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[7];
m_IpChList.InsertColumn(7, &lvc);
lvc.iSubItem = 8;
cString.LoadString(IDS_GATEWAY18);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;;
lvc.cx = ColumnWidth[8];
m_IpChList.InsertColumn(8, &lvc);
char szChId[3];
for(int i = 0; i < m_nTotalIpCh; i++)
{
m_IpChList.InsertItem(i, _itoa(m_IpCh[i].nChId, szChId, 10));
cString.LoadString(IDS_GATEWAY19);
m_IpChList.SetItemText(i, 1, cString);
switch(m_nIPProtocol)
{
case PROTOCOL_H323:
{
m_IpChList.SetItemText(i, 8, _T("H323"));
break;
}
case PROTOCOL_SIP:
{
m_IpChList.SetItemText(i, 8, _T("SIP"));
break;
}
default:
{
cString.LoadString(IDS_GATEWAY20);
m_IpChList.SetItemText(i, 8, cString);
break;
}
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
void CIPGatewayDlg::InitLogListCtrl()
{
CString cString;
m_LogList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
COLORREF cr = 0x000000;
m_LogList.SetBkColor(cr);
m_LogList.SetTextBkColor(cr);
COLORREF cr1 = 0x00ff00;
m_LogList.SetTextColor(cr1);
int ColumnWidth[4] = {36, 85, 70, 750};
LV_COLUMN lvc;
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.iSubItem = 0;
cString.LoadString(IDS_GATEWAY21);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[0];
m_LogList.InsertColumn(0, &lvc);
lvc.iSubItem = 1;
cString.LoadString(IDS_GATEWAY22);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[1];
m_LogList.InsertColumn(1, &lvc);
lvc.iSubItem = 2;
cString.LoadString(IDS_GATEWAY23);
lvc.pszText = (LPTSTR)(LPCTSTR)cString;
lvc.cx = ColumnWidth[2];
m_LogList.InsertColumn(2, &lvc);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -