📄 channeldlg.cpp
字号:
// ChannelDlg.cpp : implementation file
//
#include "stdafx.h"
#include "LiveController.h"
#include "ChannelDlg.h"
#include "Schedule.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CChannelDlg dialog
CChannelDlg::CChannelDlg(CWnd* pParent /*=NULL*/)
: CDialog(CChannelDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CChannelDlg)
m_portChannel = _T("");
//}}AFX_DATA_INIT
m_pinterface = NULL;
}
void CChannelDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChannelDlg)
DDX_Control(pDX, IDC_ipChannel, m_ipChannel);
DDX_Control(pDX, IDC_LIST_Channel, m_ctrChannelList);
DDX_Text(pDX, IDC_portChannel, m_portChannel);
//}}AFX_DATA_MAP
}
void CChannelDlg::RefreshChannelList()
{
CChannel *m_pShowChannel= new CChannel();
m_pShowChannel = m_pinterface->GetChannelList();
int nIndex=m_ctrChannelList.GetItemCount();
while (m_pShowChannel)
{
LVITEM tempLvi;
tempLvi.mask = LVIF_IMAGE | LVIF_TEXT;
tempLvi.stateMask = -1;
tempLvi.iItem = nIndex;
tempLvi.iSubItem = 0;
CString temp;
temp.Format( "%d", m_pShowChannel->m_nChannelIndex);
tempLvi.pszText = (char *)(LPCTSTR)(temp);
m_ctrChannelList.InsertItem(&tempLvi);
m_ctrChannelList.SetItem(&tempLvi);
// IP地址
tempLvi.iSubItem = 1;
tempLvi.pszText = (char *)(LPCTSTR)(m_pShowChannel->m_strChannelIP);
m_ctrChannelList.SetItem( &tempLvi );
// 端口号
char porttemp[20];
_itoa(m_pShowChannel->m_nChannelPort,porttemp,10);
tempLvi.iSubItem = 2;
tempLvi.pszText = (char *)porttemp;
m_ctrChannelList.SetItem( &tempLvi );
// 指针
m_pShowChannel = m_pShowChannel->m_pNext;
nIndex++;
}
delete m_pShowChannel;
}
BEGIN_MESSAGE_MAP(CChannelDlg, CDialog)
//{{AFX_MSG_MAP(CChannelDlg)
ON_BN_CLICKED(IDC_BN_Channel_ADD, OnBNChannelADD)
ON_NOTIFY(NM_CLICK, IDC_LIST_Channel, OnClickLISTChannel)
ON_BN_CLICKED(IDC_BN_Channel_DEL, OnBNChannelDEL)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChannelDlg message handlers
BOOL CChannelDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
LVCOLUMN lvcol;
lvcol.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT;
lvcol.fmt = LVCFMT_LEFT;
lvcol.pszText = _T( "序号" );
lvcol.iSubItem = 1;
m_ctrChannelList.InsertColumn( 0, &lvcol );
m_ctrChannelList.SetColumnWidth( 0, 50 );
lvcol.pszText = _T( "IP地址" );
m_ctrChannelList.InsertColumn( 1, &lvcol );
m_ctrChannelList.SetColumnWidth( 1, 150 );
lvcol.pszText = _T( "端口号" );
m_ctrChannelList.InsertColumn( 2, &lvcol );
m_ctrChannelList.SetColumnWidth( 2, 80 );
DWORD dwStyle = m_ctrChannelList.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;
dwStyle |= LVS_EX_GRIDLINES;
m_ctrChannelList.SetExtendedStyle(dwStyle);
GetDlgItem(IDC_BN_Channel_DEL)->EnableWindow(FALSE);
////////////////////////////显示数据库列表//////////////////////////////
RefreshChannelList();
/////////////////////////////////////////////////////////////////////////////
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CChannelDlg::OnBNChannelADD()
{
// TODO: Add your control notification handler code here
UpdateData();
m_pNewAddedChannel=new CChannel();
BYTE nField0,nField1,nField2,nField3;
m_ipChannel.GetAddress(nField0,nField1,nField2,nField3);
//得到IP地址 string类型
m_pNewAddedChannel->m_strChannelIP.Format("%d.%d.%d.%d",nField0,nField1,nField2,nField3);
if (!m_ipChannel.GetAddress(nField0,nField1,nField2,nField3)||(nField0==0)||(nField0==0&&nField1==0&&nField2==0&&nField3==0))
{
AfxMessageBox("IP地址有错,请重新输入");
}
else
{
//将cstring类型的端口转换成int型
int inttemp;
inttemp = atoi((char *)(LPCTSTR)m_portChannel );
m_pNewAddedChannel->m_nChannelPort = inttemp;
//判断端口的范围
if ((!m_pNewAddedChannel->m_nChannelPort) || (m_pNewAddedChannel->m_nChannelPort>65535) || (m_pNewAddedChannel->m_nChannelPort<0))
{
AfxMessageBox("端口号码应在0 ~ 65535之间选择");
}
else
{
//得到插入序号 int型
m_pNewAddedChannel->m_nChannelIndex = (m_ctrChannelList.GetItemCount()+1);
m_pinterface->AddChannel(m_pNewAddedChannel);
m_ctrChannelList.DeleteAllItems();
RefreshChannelList();
delete m_pNewAddedChannel;
}
}
m_ipChannel.SetAddress(0);
m_portChannel.Empty();
UpdateData(FALSE);
}
void CChannelDlg::OnClickLISTChannel(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
LPNMITEMACTIVATE pNmitem = (LPNMITEMACTIVATE)pNMHDR;
UINT uFlags;
m_nSelectChannelItem = m_ctrChannelList.HitTest( CPoint(pNmitem->ptAction), &uFlags );
if ( m_nSelectChannelItem < 0 )
{
GetDlgItem(IDC_BN_Channel_DEL)->EnableWindow(FALSE);
*pResult = 0;
return;
}
GetDlgItem(IDC_BN_Channel_DEL)->EnableWindow(TRUE);
*pResult = 0;
}
void CChannelDlg::OnBNChannelDEL()
{
// TODO: Add your control notification handler code here
CString IDtemp;
int temp;
POSITION pos = m_ctrChannelList.GetFirstSelectedItemPosition();
if (pos)
{
int index = m_ctrChannelList.GetNextSelectedItem(pos);
IDtemp = m_ctrChannelList.GetItemText(index,0);
temp = atoi((char *)(LPCTSTR)IDtemp);
m_pinterface->RemoveChannelItem(temp);
m_ctrChannelList.DeleteAllItems();
RefreshChannelList();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -