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

📄 bstvdlg.cpp

📁 采用vc++实现了模拟广播网发送UCL标引的数据包
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	m_pRecordset = NULL;
    m_pRecordsetSend->Close();
	m_pRecordsetSend = NULL;
	
	return CDialog::DestroyWindow();
}
//---Send消息响应------------------------------------------------------------------------------------
void CBSTVDlg::OnSelchangeListsend() 
{
	int curSelSend = m_AccessListSend.GetCurSel();
	_variant_t var,varIndex;

	if(curSelSend < 0 )
		return;

	try
	{
		// 先将指针移向第一条记录,然后就可以相对第一条记录来随意移动记录指针
		m_pRecordsetSend->MoveFirst();
		m_pRecordsetSend->Move(long(curSelSend));
		m_pRecordsetSend->Update();
		UpdateData(false);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}
void CBSTVDlg::OnSelchangeListsend2() 
{
	// TODO: Add your control notification handler code here
	int curSelSend = m_AccessListSend2.GetCurSel();
	_variant_t var,varIndex;

	if(curSelSend < 0 )
		return;

	try
	{
		// 先将指针移向第一条记录,然后就可以相对第一条记录来随意移动记录指针
		m_pRecordsetSend2->MoveFirst();
		m_pRecordsetSend2->Move(long(curSelSend));
		m_pRecordsetSend2->Update();
		UpdateData(false);
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}
//---Send消息响应-----------------------------------------------------------------------
void CBSTVDlg::OnSendadd() 
{
	_variant_t var;
	CString strNameSend,strTypeSend,strLocSend;	
	try
	{
		if(!m_pRecordset->adoEOF)
		{
			var = m_pRecordset->GetCollect("节目名称");
			if(var.vt != VT_NULL)
				strNameSend = (LPCSTR)_bstr_t(var);
			var = m_pRecordset->GetCollect("节目类型");
			if(var.vt != VT_NULL)
				strTypeSend = (LPCSTR)_bstr_t(var);
            var = m_pRecordset->GetCollect("位置");
			if(var.vt != VT_NULL)
				strLocSend = (LPCSTR)_bstr_t(var);
		}
		m_pRecordsetSend->AddNew();
		m_pRecordsetSend->PutCollect("节目名称", _variant_t(strNameSend));
		m_pRecordsetSend->PutCollect("节目类型", _variant_t(strTypeSend));
        m_pRecordsetSend->PutCollect("位置", _variant_t(strLocSend));
		m_pRecordsetSend->Update();

		AfxMessageBox("添加成功!");

		// 更新显示其库内容
		int nCurSel = m_AccessListSend.GetCount();
		ListData();
		OnReadaccess();
       	m_AccessListSend.SetCurSel(nCurSel);
        
		// 移动记录指针到新的位置
		OnSelchangeListsend();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}
void CBSTVDlg::OnSendadd2() 
{
	// TODO: Add your control notification handler code here
	_variant_t var;
	CString strNameSend2,strTypeSend2,strLocSend2;	
	try
	{
		if(!m_pRecordset->adoEOF)
		{
			var = m_pRecordset->GetCollect("节目名称");
			if(var.vt != VT_NULL)
				strNameSend2 = (LPCSTR)_bstr_t(var);
			var = m_pRecordset->GetCollect("节目类型");
			if(var.vt != VT_NULL)
				strTypeSend2 = (LPCSTR)_bstr_t(var);
            var = m_pRecordset->GetCollect("位置");
			if(var.vt != VT_NULL)
				strLocSend2 = (LPCSTR)_bstr_t(var);
		}
		m_pRecordsetSend2->AddNew();
		m_pRecordsetSend2->PutCollect("节目名称", _variant_t(strNameSend2));
		m_pRecordsetSend2->PutCollect("节目类型", _variant_t(strTypeSend2));
        m_pRecordsetSend2->PutCollect("位置", _variant_t(strLocSend2));
		m_pRecordsetSend2->Update();

		AfxMessageBox("添加成功!");

		// 更新显示其库内容
		int nCurSel = m_AccessListSend2.GetCount();
		ListData();
		OnReadaccess();
       	m_AccessListSend2.SetCurSel(nCurSel);
        
		// 移动记录指针到新的位置
		OnSelchangeListsend2();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
}

//---Send消息响应删除-----------------------------------------------------------------------
void CBSTVDlg::OnSenddelet() 
{
	if(m_AccessListSend.GetCount() == 0)
		return;
	else if(m_AccessListSend.GetCurSel() < 0 || m_AccessListSend.GetCurSel() > m_AccessListSend.GetCount())
		m_AccessListSend.SetCurSel(0);
	try
	{
		// 删除当前行记录
		m_pRecordsetSend->Delete(adAffectCurrent);
		m_pRecordsetSend->Update();
		// 删除列表中当前值
		int nCurSel = m_AccessListSend.GetCurSel();
		m_AccessListSend.DeleteString(nCurSel);
		if(nCurSel == 0 && (m_AccessListSend.GetCount() != 0))
			m_AccessListSend.SetCurSel(nCurSel);
		else if(m_AccessListSend.GetCount() != 0)
			m_AccessListSend.SetCurSel(nCurSel-1);

		// 移动记录指针到新的位置
		OnSelchangeListsend();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	
}
void CBSTVDlg::OnSenddelet2() 
{
	// TODO: Add your control notification handler code here
	if(m_AccessListSend2.GetCount() == 0)
		return;
	else if(m_AccessListSend2.GetCurSel() < 0 || m_AccessListSend2.GetCurSel() > m_AccessListSend2.GetCount())
		m_AccessListSend2.SetCurSel(0);
	try
	{
		// 删除当前行记录
		m_pRecordsetSend2->Delete(adAffectCurrent);
		m_pRecordsetSend2->Update();
		// 删除列表中当前值
		int nCurSel = m_AccessListSend2.GetCurSel();
		m_AccessListSend2.DeleteString(nCurSel);
		if(nCurSel == 0 && (m_AccessListSend2.GetCount() != 0))
			m_AccessListSend2.SetCurSel(nCurSel);
		else if(m_AccessListSend2.GetCount() != 0)
			m_AccessListSend2.SetCurSel(nCurSel-1);

		// 移动记录指针到新的位置
		OnSelchangeListsend2();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	
}
//---Send消息响应发送-----------------------------------------------------------------------
void CBSTVDlg::OnSend() 
{
	_variant_t var;	
	CString strNameSend,strTypeSend;
	nFileCount=m_AccessListSend.GetCount();
    //m_ctlBsend.EnableWindow(0);//将“发送”按钮置为不可用(变灰)
    GetDlgItem(IDC_SEND)->EnableWindow(FALSE);
	GetDlgItem(IDC_SENDDELET)->EnableWindow(FALSE);
	m_pRecordsetSend->MoveFirst();

	try
	{
		for(int nNum=0;nNum<nFileCount;nNum++)
		{
			var = m_pRecordsetSend->GetCollect("节目名称");
		    if(var.vt != VT_NULL)
			 strNameSend= (LPCSTR)_bstr_t(var);
			var = m_pRecordsetSend->GetCollect("位置");
		    if(var.vt != VT_NULL)
			  m_ctsFileaddr= (LPCSTR)_bstr_t(var);
			var = m_pRecordsetSend->GetCollect("节目类型");
		    if(var.vt != VT_NULL)
			 strTypeSend= (LPCSTR)_bstr_t(var);
			FileName[nNum]=(char*)(LPCTSTR) m_ctsFileaddr;
			strType[nNum]=(char*)(LPCTSTR) strTypeSend;
			strName[nNum]=(char*)(LPCTSTR) strNameSend;
			m_pRecordsetSend->MoveNext();
		}
       
		bStop=false;
        bStop2=false;
        HWND hwnd=GetSafeHwnd();//获得一个句柄值
		AfxBeginThread(SourceFile,hwnd,THREAD_PRIORITY_NORMAL);
	                          //调用UINT SourceFile(LPVOID param)函数
	                         //向指定目的地(用户所键入的IP地址)发送数据
		
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	UpdateData(false);

}
void CBSTVDlg::OnSend2() 
{
	// TODO: Add your control notification handler code here
	_variant_t var;	
	CString strNameSend2,strTypeSend2;
	nFileCount2=m_AccessListSend2.GetCount();
    //m_ctlBsend.EnableWindow(0);//将“发送”按钮置为不可用(变灰)
    GetDlgItem(IDC_SEND2)->EnableWindow(FALSE);
	GetDlgItem(IDC_SENDDELET2)->EnableWindow(FALSE);
	m_pRecordsetSend2->MoveFirst();

	try
	{
		for(int nNum=0;nNum<nFileCount2;nNum++)
		{
			var = m_pRecordsetSend2->GetCollect("节目名称");
		    if(var.vt != VT_NULL)
			 strNameSend2= (LPCSTR)_bstr_t(var);
			var = m_pRecordsetSend2->GetCollect("位置");
		    if(var.vt != VT_NULL)
			  m_ctsFileaddr2= (LPCSTR)_bstr_t(var);
			var = m_pRecordsetSend2->GetCollect("节目类型");
		    if(var.vt != VT_NULL)
			 strTypeSend2= (LPCSTR)_bstr_t(var);
			FileName2[nNum]=(char*)(LPCTSTR) m_ctsFileaddr2;
			strType2[nNum]=(char*)(LPCTSTR) strTypeSend2;
			strName2[nNum]=(char*)(LPCTSTR) strNameSend2;
			m_pRecordsetSend2->MoveNext();
		}
       
		bStop3=false;
        bStop4=false;
        HWND hwnd=GetSafeHwnd();//获得一个句柄值
		AfxBeginThread(SourceFile2,hwnd,THREAD_PRIORITY_NORMAL);
	                          //调用UINT SourceFile(LPVOID param)函数
	                         //向指定目的地(用户所键入的IP地址)发送数据
		
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}
	UpdateData(false);
}
void CBSTVDlg::OnSendSerial(WPARAM wParam,LPARAM lParam)
{
	char SerialNum[20];//定义一个长为20的字符数组
	sprintf(SerialNum,"%d",m_PacketSerialNum);
	                  //SerialNum中存放“当前传送包(m_PacketSerialNum)”的值

	m_ctsFileaddr="【节目\r\n[*"+strNameB+"*]\r\n发送中…】\r\n当前传送包:";
	m_ctsFileaddr+=SerialNum;
   if(m_PacketSerialNum==0||m_PacketSerialNum==m_PacketTotalNum-1)
   {
	   m_ctsFileaddr="【节目发送结束】";
   }
	UpdateData(false);
}
void CBSTVDlg::OnSendSerial2(WPARAM wParam,LPARAM lParam)
{
	char SerialNum[20];//定义一个长为20的字符数组
	sprintf(SerialNum,"%d",m_PacketSerialNum2);
	                  //SerialNum中存放“当前传送包(m_PacketSerialNum)”的值

	m_ctsFileaddr2="【节目\r\n[*"+strName2B+"*]\r\n发送中…】\r\n当前传送包:";
	m_ctsFileaddr2+=SerialNum;
   if(m_PacketSerialNum2==0||m_PacketSerialNum2==m_PacketTotalNum2-1)
   {
	   m_ctsFileaddr2="【节目发送结束】";
   }
	UpdateData(false);
}


void CBSTVDlg::OnStop() 
{
	// TODO: Add your control notification handler code here
	m_ctsFileaddr="节目已终止发送\r\n要发送,请点击Send按钮";
	bStop2=true;	
	GetDlgItem(IDC_SEND)->EnableWindow(true);
	GetDlgItem(IDC_SENDDELET)->EnableWindow(true);
	UpdateData(false);
}
void CBSTVDlg::OnStop2() 
{
	// TODO: Add your control notification handler code here
	m_ctsFileaddr2="节目已终止发送\r\n要发送,请点击Send按钮";
	bStop4=true;	
	GetDlgItem(IDC_SEND2)->EnableWindow(true);
	GetDlgItem(IDC_SENDDELET2)->EnableWindow(true);
	UpdateData(false);
}

void CBSTVDlg::OnReceivePort1() 
{
	// TODO: Add your control notification handler code here
//	m_Recv_Port=7001;
//	m_ReceivePort1.EnableWindow(0);
//	m_ReceivePort2.EnableWindow(1);
}

void CBSTVDlg::OnReceivePort2() 
{
	// TODO: Add your control notification handler code here
//	m_Recv_Port=7002;
//	m_ReceivePort1.EnableWindow(1);
//	m_ReceivePort2.EnableWindow(0);	
}









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -