⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channeldlg.cpp

📁 视频播放控制器程序
💻 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 + -