流媒体管理器的制作

4 篇文章 0 订阅
1:h文件
CListCtrl m_list;
int m_nIndex;
int n_start;
DWORD m_ip_value;
CRect r;
2: cpp文件 OnInitialUpdate()
DWORD dwStyle = m_list.GetExtendedStyle();   
dwStyle |= LVS_EX_FULLROWSELECT;    //选中某行使整行高亮(只适用于Report风格)
dwStyle |= LVS_EX_GRIDLINES;    //网格线(只适用于Report风格)
m_list.SetExtendedStyle(dwStyle);

m_list.InsertColumn(0, _T("序号"), LVCFMT_LEFT, 50);
m_list.InsertColumn(1, _T("流名称"), LVCFMT_LEFT, 100);
m_list.InsertColumn(2, _T("流类型"), LVCFMT_LEFT, 100);
m_list.InsertColumn(3, _T("留地址"), LVCFMT_LEFT, 100);
m_list.InsertColumn(4, _T("备注"), LVCFMT_LEFT, 250);

3、添加流媒体对话框
	CDlgLMT_Add dlg;
	//dlg_lmt.DoModal();
	if (n_start == 0)
	{
		if (dlg.DoModal() == IDOK)
		{
			m_list.InsertItem(0, L"");
			m_list.SetItemText(0, 1, dlg.m_sm_name);
			m_list.SetItemText(0, 2, dlg.str);
			m_list.SetItemText(0, 3, dlg.str_ip);
			m_list.SetItemText(0, 4, dlg.m_sm_text);
			n_start = 1;
			m_ip_value = dlg.m_ip_value;
		}
	}
	else if (m_list.GetSelectionMark() == -1)
	{
		if (dlg.DoModal() == IDOK)
		{
			m_nIndex = m_list.GetItemCount();
			m_list.InsertItem(m_nIndex, L"");
			m_list.SetItemText(m_nIndex, 1, dlg.m_sm_name);
			m_list.SetItemText(m_nIndex, 2, dlg.str);
			m_list.SetItemText(m_nIndex, 3, dlg.str_ip);
			m_list.SetItemText(m_nIndex, 4, dlg.m_sm_text);
			m_ip_value = dlg.m_ip_value;
			//CString str;
			//str.Format(L"%d",m_nIndex);
			//MessageBox(str);
		}
	}
	else
	{
		/*m_nIndex=m_list.GetNextItem ( -1, LVNI_SELECTED );*/
		m_nIndex = m_list.GetSelectionMark();
		if (dlg.DoModal() == IDOK)
		{
			m_list.InsertItem(m_nIndex, L"");
			m_list.SetItemText(m_nIndex, 1, dlg.m_sm_name);
			m_list.SetItemText(m_nIndex, 2, dlg.str);
			m_list.SetItemText(m_nIndex, 3, dlg.str_ip);
			m_list.SetItemText(m_nIndex, 4, dlg.m_sm_text);
			m_list.SetItem(m_nIndex, 0, LVIF_STATE, NULL, 0, LVIS_SELECTED, LVIS_SELECTED, 0);//设置某行为选中状态
			m_ip_value = dlg.m_ip_value;
			m_nIndex++;
		}
		//CString str;
		//str.Format(L"%d",m_nIndex);
		//MessageBox(str);
	}

	int num = m_list.GetItemCount();
	CString tmp;
	for (int i = 0; i < num; i++)
	{
		tmp.Format(L"%d", i + 1);
		m_list.SetItemText(i, 0, tmp);
}
4、h文件
CString str;
CString str_ip;
CString m_cbx_value;
CString m_sm_name;
CString m_sm_text;
CIPAddressCtrl m_ip;
DWORD m_ip_value;
CComboBox m_cbx;

OnInitDialog():
((CEdit *)GetDlgItem(IDC_EDIT1))->SetLimitText(5);
m_cbx.AddString(TEXT("RTSP"));
m_cbx.AddString(TEXT("MMS"));
m_cbx.AddString(TEXT("HTTP"));
m_cbx.SetCurSel(1);

按钮确认:
UpdateData(TRUE);

BYTE a1, a2, a3, a4;
m_ip.GetAddress(a1, a2, a3, a4);
str_ip.Format(L"%d.%d.%d.%d", a1, a2, a3, a4);

if (m_sm_name == L"")
{
	AfxMessageBox(L"请输入名称");
	return;
}
else if (m_cbx_value == L"")
{
	AfxMessageBox(L"请输入类型");
	return;
}
else if (a1 == 0 && a2 == 0 && a3 == 0 && a4 == 0)
{
	AfxMessageBox(L"请输入IP");
	return;
}
else if (m_sm_text == L"")
{
	AfxMessageBox(L"备注为空请重新添加");
	return;
}

if (m_cbx.GetCurSel() >= 0)
{
	m_cbx.GetLBText(m_cbx.GetCurSel(), str);
}
else
{
	str = m_cbx_value;
}
OnOK();

5、属性对话框:
m_nIndex = m_list.GetSelectionMark();
m_tab dlg_tab;
dlg_tab.DoModal();
	if (m_list.GetItemCount()==0||m_list.GetSelectionMark()==-1)
	{
		pCmdUI->Enable(FALSE);
	}
	else
	{
		pCmdUI->Enable(TRUE);
	}
}


void CCtest3View::OnUpdateAtribute(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	if (m_list.GetItemCount()==0||m_list.GetSelectionMark()==-1)
	{
		pCmdUI->Enable(FALSE);
	}
	else
	{
		pCmdUI->Enable(TRUE);
	}
}

6、删除选中行
if (m_list.GetSelectionMark() != -1)
{
	m_nIndex = m_list.GetSelectionMark();
	m_list.DeleteItem(m_nIndex);
}

int num = m_list.GetItemCount();
CString tmp;
for (int i = 0; i < num; i++)
{
	tmp.Format(L"%d", i + 1);
	m_list.SetItemText(i, 0, tmp);
}
7、

h文件:
CPage1 m_page_1;
CPage2 m_page_2;

导入CTabSheet.h与CTabSheet.cpp

OnInitDialog():
m_Tab.AddPage(_T("常规"), &m_page_1, IDD_DIALOG2);
m_Tab.AddPage(_T("网络"), &m_page_2, IDD_DIALOG3);
m_Tab.Show();
8、
对于第一个子界面OnInitDialog():
CMainFrame *pmain = (CMainFrame *)(AfxGetApp()->m_pMainWnd);
CMFCtest04View * pView = (CMFCtest04View *)(pmain->GetActiveView());
int n = pView->m_nIndex;
m_copy_name = pView->m_list.GetItemText(n, 1);
m_copy_type = pView->m_list.GetItemText(n, 2);
m_copy_ip.SetAddress(pView->m_ip_value);
m_copy_text = pView->m_list.GetItemText(n, 4);
m_copy_ip.EnableWindow(FALSE);
UpdateData(FALSE);
9、鼠标右键
WM_CONTEXTMENU:
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME);
//获得指定ID菜单的所有子菜单
CMenu* pMenu;
pMenu = menu.GetSubMenu(0);
//EnableMenuItem的意思是允许、禁止或变灰指定的菜单条目。
//为每一个子菜单设置状态
pMenu->EnableMenuItem(ID_32771, MF_BYCOMMAND | MF_ENABLED);//激活转态
pMenu->EnableMenuItem(ID_32772, MF_BYCOMMAND | MF_ENABLED);//激活转态
pMenu->EnableMenuItem(ID_32773, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);//禁用状态,灰色

//在鼠标点击处的位置加载出来菜单项
pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
pMenu->Detach();
menu.DestroyMenu();

10、工具栏
ON_COMMAND(ID_PSX, &CMFCtest402View::OnTestFunc)

void CMFCtest402View::OnTestFunc()
{
	CDlgPicSX dlg;
	dlg.DoModal();
}

h文件:
afx_msg void OnTestFunc();

11、设置窗口标题MainFrm.cpp->PreCreateWindow():
cs.cx=700;
cs.cy=570;
cs.style&=~FWS_ADDTOTITLE;//将FWS_ADDTOTITLE去掉

cs.lpszName=L"流媒体管理器";//改变标题,替换自己的标题

12、更新菜单栏状态
更新删除与属性选项:
void CCtest3View::OnUpdateDelete(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	if (m_list.GetItemCount()==0||m_list.GetSelectionMark()==-1)
	{
		pCmdUI->Enable(FALSE);
	}
	else
	{
		pCmdUI->Enable(TRUE);
	}
}


void CCtest3View::OnUpdateAtribute(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	if (m_list.GetItemCount()==0||m_list.GetSelectionMark()==-1)
	{
		pCmdUI->Enable(FALSE);
	}
	else
	{
		pCmdUI->Enable(TRUE);
	}
}
13、ListControl的左右击点击响应
	OnNMRClickList1:
	//右键点击响应
	NM_LISTVIEW*  pNMListView = (NM_LISTVIEW*)pNMHDR; 

	if(pNMListView->iItem != -1) 
	{ 
		//CString strtemp; 
		//strtemp.Format(L"单击的是第%d行第%d列",pNMListView->iItem, pNMListView->iSubItem); 
		//MessageBox(strtemp); //行列索引
		CMenu menu;
		menu.LoadMenu(IDR_MAINFRAME);//IDR_MENU_Datagram 资源里菜单的ID
		CMenu *pMenu = menu.GetSubMenu(0);
		CPoint pt;
		GetCursorPos(&pt);	
		pMenu->TrackPopupMenu (TPM_LEFTALIGN,pt.x,pt.y,this);
		m_nIndex=pNMListView->iItem;
	} 


	OnNMClickList1:
	//左键点击响应
	NM_LISTVIEW*  pNMListView = (NM_LISTVIEW*)pNMHDR; 

	if(pNMListView->iItem == -1) 
	{ 
		m_list.SetItemState(m_list.GetSelectionMark(), 0,-1);
		m_list.SetSelectionMark(-1);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值