📄 videodlg.cpp
字号:
// VideoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "LiveController.h"
#include "VideoDlg.h"
#include "AddVideoDlg.h"
#include "ListItem.h"
#include "Schedule.h"
#include "ViewVideoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CVideoDlg dialog
CVideoDlg::CVideoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CVideoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CVideoDlg)
m_VideoFileName = _T("");
//}}AFX_DATA_INIT
}
void CVideoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CVideoDlg)
DDX_Control(pDX, IDC_LIST_Video, m_ctrVideoList);
DDX_Text(pDX, IDC_Video_Show, m_VideoFileName);
//}}AFX_DATA_MAP
}
void CVideoDlg::RefreshVidList()
{
VideoListItem *m_pShowVid= new VideoListItem();
m_pShowVid = m_pDBinterface->GetVideoList();
int nIndex=m_ctrVideoList.GetItemCount();
while (m_pShowVid)
{
LVITEM tempLvi;
tempLvi.mask = LVIF_IMAGE | LVIF_TEXT;
tempLvi.stateMask = -1;
//////////// Video ID //////////////////////////////////////////////////////
tempLvi.iItem = nIndex;
tempLvi.iSubItem = 0;
char idtemp[20];
_itoa(m_pShowVid->VideoID,idtemp,10);
tempLvi.pszText = (char *)idtemp;
m_ctrVideoList.InsertItem(&tempLvi);
m_ctrVideoList.SetItem(&tempLvi);
/////////// Video type //////////////////////////////////////////////////////
char typetemp[20];
_itoa(m_pShowVid->VideoType,typetemp,10);
tempLvi.iSubItem = 1;
tempLvi.pszText = (char *)typetemp;
m_ctrVideoList.SetItem( &tempLvi );
////////// Video name //////////////////////////////////////////////////////
tempLvi.iSubItem = 2;
tempLvi.pszText = (char *)(LPCTSTR)(m_pShowVid->VideoName);
m_ctrVideoList.SetItem( &tempLvi );
////////// Vieo path //////////////////////////////////////////////////////
tempLvi.iSubItem = 3;
tempLvi.pszText = (char *)(LPCTSTR)(m_pShowVid->VideoPath);
m_ctrVideoList.SetItem( &tempLvi );
///////// Video FormatFile /////////////////////////////////////////////
tempLvi.iSubItem = 4;
tempLvi.pszText = (char *)(LPCTSTR)(m_pShowVid->VideoFormatFlie);
m_ctrVideoList.SetItem( &tempLvi );
m_pShowVid = m_pShowVid->pNext;
nIndex++;
}
delete m_pShowVid;
}
BEGIN_MESSAGE_MAP(CVideoDlg, CDialog)
//{{AFX_MSG_MAP(CVideoDlg)
ON_BN_CLICKED(IDC_BN_Video_SELECT, OnBNVideoSELECT)
ON_BN_CLICKED(IDC_BN_Video_ADD, OnBNVideoADD)
ON_NOTIFY(NM_CLICK, IDC_LIST_Video, OnClickLISTVideo)
ON_BN_CLICKED(IDC_BN_Video_DEL, OnBNVideoDEL)
ON_BN_CLICKED(IDC_BN_Video_VIEW, OnBNVideoVIEW)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_Video, OnDblclkLISTVideo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CVideoDlg message handlers
BOOL CVideoDlg::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( "视频源ID" );
lvcol.iSubItem = 1;
m_ctrVideoList.InsertColumn( 0, &lvcol );
m_ctrVideoList.SetColumnWidth( 0, 80 );
lvcol.pszText = _T( "类型" );
m_ctrVideoList.InsertColumn( 1, &lvcol );
m_ctrVideoList.SetColumnWidth( 1, 130 );
lvcol.pszText = _T( "名称" );
m_ctrVideoList.InsertColumn( 2, &lvcol );
m_ctrVideoList.SetColumnWidth( 2, 80 );
lvcol.pszText = _T( "路径" );
m_ctrVideoList.InsertColumn( 3, &lvcol );
m_ctrVideoList.SetColumnWidth( 3, 150 );
lvcol.pszText = _T( "配置文件" );
m_ctrVideoList.InsertColumn( 4, &lvcol );
m_ctrVideoList.SetColumnWidth( 4, 80 );
/////网格状表格////
DWORD dwStyle = m_ctrVideoList.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;
dwStyle |= LVS_EX_GRIDLINES;
m_ctrVideoList.SetExtendedStyle(dwStyle);
//////////////获取列表内容//////////////////////////////////
RefreshVidList();
///////////////////////////////////////////////////////////////
GetDlgItem(IDC_BN_Video_DEL)->EnableWindow(FALSE);
GetDlgItem(IDC_BN_Video_VIEW)->EnableWindow(FALSE);
GetDlgItem(IDC_BN_Video_ADD)->EnableWindow(TRUE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CVideoDlg::OnBNVideoSELECT()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = "(*.*)|*.*||";
CFileDialog filedlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL);
if(IDOK==filedlg.DoModal())
{
m_VideoFileName=filedlg.GetPathName();//得到文件名及路径
}
UpdateData(false);
GetDlgItem(IDC_BN_Video_ADD)->EnableWindow(TRUE);
}
void CVideoDlg::OnBNVideoADD()
{
// TODO: Add your control notification handler code here
CAddVideoDlg dlg;
if ( dlg.DoModal() != IDOK ) {
return;
}
VideoListItem *m_pNewAddedVideoItem;
m_pNewAddedVideoItem = new VideoListItem;
UpdateData();
int nIndex = m_ctrVideoList.GetItemCount();
m_pNewAddedVideoItem->VideoID = nIndex;
m_pNewAddedVideoItem->VideoName = dlg.m_VideoName;
m_pNewAddedVideoItem->VideoType = dlg.gettype;
m_pNewAddedVideoItem->VideoPath = m_VideoFileName;
m_pNewAddedVideoItem->VideoFormatFlie = dlg.m_VideoFormatFile;
m_pDBinterface->AddVidsrc(m_pNewAddedVideoItem); //添加项目
m_ctrVideoList.DeleteAllItems(); //删除所有项目
RefreshVidList();
}
void CVideoDlg::OnClickLISTVideo(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
LPNMITEMACTIVATE pNmitem = (LPNMITEMACTIVATE)pNMHDR;
UINT uFlags;
m_nSelectVideoItem = m_ctrVideoList.HitTest( CPoint(pNmitem->ptAction), &uFlags );
if ( m_nSelectVideoItem < 0 )
{
GetDlgItem(IDC_BN_Video_DEL)->EnableWindow(FALSE);
GetDlgItem(IDC_BN_Video_VIEW)->EnableWindow(FALSE);
*pResult = 0;
return;
}
GetDlgItem(IDC_BN_Video_DEL)->EnableWindow(TRUE);
GetDlgItem(IDC_BN_Video_VIEW)->EnableWindow(TRUE);
*pResult = 0;
}
void CVideoDlg::OnBNVideoDEL()
{
// TODO: Add your control notification handler code here
POSITION pos = m_ctrVideoList.GetFirstSelectedItemPosition();
int temp;
CString ttemp;
if (pos)
{
int index = m_ctrVideoList.GetNextSelectedItem(pos);
ttemp = m_ctrVideoList.GetItemText(index,0);
temp = atoi((char *)(LPCTSTR)ttemp);
m_pDBinterface->RemoveVidsrc(temp);
m_ctrVideoList.DeleteAllItems();
RefreshVidList();
}
}
void CVideoDlg::OnBNVideoVIEW()
{
// TODO: Add your control notification handler code here
CViewVideoDlg dlg;
POSITION pos = m_ctrVideoList.GetFirstSelectedItemPosition();
if (pos)
{
int nIndex = m_ctrVideoList.GetNextSelectedItem( pos );
dlg.m_IDshow = m_ctrVideoList.GetItemText(nIndex,0);
if (m_ctrVideoList.GetItemText(nIndex,1)=="1")
{
dlg.m_TYPEshow = SCHE_TYPE_STREAM_WITH_MSG_STR;
}
else
{
dlg.m_TYPEshow = SCHE_TYPE_STREAM_ONLY_STR;
}
dlg.m_NAMEshow = m_ctrVideoList.GetItemText(nIndex,2);
dlg.m_PATHshow = m_ctrVideoList.GetItemText(nIndex,3);
dlg.m_FORMATshow = m_ctrVideoList.GetItemText(nIndex,4);
dlg.DoModal();
}
}
void CVideoDlg::OnDblclkLISTVideo(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
OnBNVideoVIEW();
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -