📄 provincedlg.cpp
字号:
m_Action->InitProvinceArray(m_ProvinceArray.GetSize());//初始化个数
for(i=0;i<m_ProvinceArray.GetSize();i++)
{
StructProvince& Temp=m_ProvinceArray.ElementAt(i);
m_Action->InitQueuePath(Temp.m_csInQueue,Temp.m_csOutQueue ,Temp.m_csReportQueue,Temp.m_csSpyQueue ,Temp.m_csControlQueue,i);
m_Action->MoInitConnect(Temp.m_csIsmgIP , Temp.m_IsmgPort , Temp.m_csICPID , Temp.m_csSourceNode,Temp.m_IsmgUserID , Temp.m_csIsmgPassword , Temp.m_LocalPort ,Temp.m_ServiceNumber,i,Temp.m_csProvincename);
m_Action->MoStartCmppServer(m_MoThreadNum,m_ProvinceArray.GetAt(i).m_MtThreadNum ,i);
}
m_Action->StartMoThread();//启动Mothread
m_MoThreadNum=GetDlgItemInt(IDC_MOTHREADNUM);
m_MtThreadNum=GetDlgItemInt(IDC_MTTHREADNUM);
m_Action->SetSaveReport(m_bSavereport);
InitListCtrl();
}
//停止服务
void CProvinceDlg::OnStopserver()
{
KillTimer(GETMSGS);
KillTimer(EVENTDISPLAY);
if(m_Action!=NULL)
{
m_Action->MoCloseCmppServer();
delete m_Action;
m_Action=NULL;
}
CTime CurTime=CTime::GetCurrentTime();
CString csContent="Success to close MoThread and MtThread!";
m_DisplayInfo.Format("%s %s",CurTime.Format("%Y-%m-%d %H:%M:%S"),csContent);
UpdateData(FALSE);
}
void CProvinceDlg::Load()
{
char FileName[255];
UINT len=::GetCurrentDirectory(255,FileName);
FileName[len]=0;
CString csFileName=::strcat(FileName,"\\ProvinceInfo.ini");//得到包含路径的完整文件名
m_AutoRun=::GetPrivateProfileInt("Province","AutoRun",0,csFileName);
UINT ProvinceNum=::GetPrivateProfileInt("Province","ProvinceNum",0,csFileName);
UINT i;
CString TempSection;
m_ProvinceList.ResetContent();
for(i=0;i<ProvinceNum;i++)
{
StructProvince ProvinceInfo;
memset(&ProvinceInfo,0,sizeof(ProvinceInfo));
TempSection.Format("Province%d",i);
::GetPrivateProfileString(TempSection,"ProvinceName",NULL,
ProvinceInfo.m_csProvincename,50,csFileName);//得到省ID
::GetPrivateProfileString(TempSection,"RemoteIP",NULL,ProvinceInfo.m_csIsmgIP,20,csFileName);
ProvinceInfo.m_IsmgPort =::GetPrivateProfileInt(TempSection,"RemotePort",0,csFileName);
ProvinceInfo.m_LocalPort=::GetPrivateProfileInt(TempSection,"LocalPort",0,csFileName);
ProvinceInfo.m_MtThreadNum=::GetPrivateProfileInt(TempSection,"MtThreadNum",0,csFileName);
ProvinceInfo.m_MoThreadNum=::GetPrivateProfileInt(TempSection,"MoThreadNum",0,csFileName);
::GetPrivateProfileString(TempSection,"ICPID",NULL,ProvinceInfo.m_csICPID,10,csFileName);
::GetPrivateProfileString(TempSection,"USERID",NULL,ProvinceInfo.m_IsmgUserID,10,csFileName);
::GetPrivateProfileString(TempSection,"ServiceNumber",NULL,ProvinceInfo.m_ServiceNumber ,10,csFileName);
::GetPrivateProfileString(TempSection,"SourceNode",NULL,ProvinceInfo.m_csSourceNode,11,csFileName);
::GetPrivateProfileString(TempSection,"Password",NULL,ProvinceInfo.m_csIsmgPassword ,10,csFileName);
::GetPrivateProfileString(TempSection,"InQueuePath",NULL,ProvinceInfo.m_csInQueue ,255,csFileName);
::GetPrivateProfileString(TempSection,"OutQueuePath",NULL,ProvinceInfo.m_csOutQueue ,255,csFileName);
::GetPrivateProfileString(TempSection,"ControlQueuePath",NULL,ProvinceInfo.m_csControlQueue ,255,csFileName);
::GetPrivateProfileString(TempSection,"SpyQueuePath",NULL,ProvinceInfo.m_csSpyQueue ,255,csFileName);
::GetPrivateProfileString(TempSection,"ReportQueuePath",NULL,ProvinceInfo.m_csReportQueue,255,csFileName);
m_ProvinceArray.Add(ProvinceInfo);
m_ProvinceList.InsertString(i, ProvinceInfo.m_csProvincename);//显示该移动
}
m_ProvinceList.SetCurSel(0);
m_ProvinceList.GetLBText(0,m_csProvincename);
DisplayAllInfo(0);
}
void CProvinceDlg::Save()
{
UpdateData();
CReg Reg;
Reg.SetKey(m_csProvincename,"m_csProvincename",m_csProvincename);
Reg.SetKey(m_csProvincename,"m_csControlQueue",m_csControlQueue);
Reg.SetKey(m_csProvincename,"m_csICPID",m_csICPID);
Reg.SetKey(m_csProvincename,"m_csInQueue",m_csInQueue);
Reg.SetKey(m_csProvincename,"m_csIsmgIP",m_csIsmgIP);
Reg.SetKey(m_csProvincename,"m_csIsmgPassword",m_csIsmgPassword);
Reg.SetKey(m_csProvincename,"m_IsmgPort",m_IsmgPort);
Reg.SetKey(m_csProvincename,"m_IsmgUserID",m_IsmgUserID);
Reg.SetKey(m_csProvincename,"m_csOutQueue",m_csOutQueue);
Reg.SetKey(m_csProvincename,"m_csReportQueue",m_csReportQueue);
Reg.SetKey(m_csProvincename,"m_csSpyQueue",m_csSpyQueue);
Reg.SetKey(m_csProvincename,"m_LocalPort",(int&)m_LocalPort);
Reg.SetKey(m_csProvincename,"m_ServiceNumber",m_ServiceNumber);
Reg.SetKey(m_csProvincename,"m_SourceNode",m_SourceNode);
}
void CProvinceDlg::OnDestroy()
{
CDialog::OnDestroy();
OnStopserver();
Save();
m_ProvinceArray.RemoveAll();
}
void CProvinceDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==EVENTDISPLAY)
{
CString NewInfo = "";
int LostMsg = 0;
m_Action->GetStatusNewInfo(NewInfo,LostMsg);
if(NewInfo!="")
{
//if(m_DisplayInfo.GetLength()>=20000) m_DisplayInfo.Empty();
int row = m_ctrlList.GetItemCount();
if( row > 80 )
{
m_ctrlList.DeleteAllItems();
row = 0;
}
row = m_ctrlList.InsertItem(row,NewInfo) ;
// m_DisplayInfo=NewInfo+m_DisplayInfo;
// UpdateData(FALSE);
// if(m_DisplayInfo.GetLength()>=20000)
// m_DisplayInfo.Empty();
}
}
if(nIDEvent==GETMSGS)
{
RefrashListCtrl();
}
CDialog::OnTimer(nIDEvent);
}
void CProvinceDlg::OnDisplayinfo()
{
m_IsDisplayAllInfo=!m_IsDisplayAllInfo;
if(m_IsDisplayAllInfo)
{
if(m_Action!=NULL)
{
m_Action->SetDisplayAllInfo();
SetTimer(EVENTDISPLAY,500,NULL);
}
}
else
{
if(m_Action!=NULL)
{
m_Action->SetDisplayForbidden();
KillTimer(EVENTDISPLAY);
}
}
}
//控制是否返回状态报告
void CProvinceDlg::OnGetreport()
{
}
void CProvinceDlg::OnLoadset()
{
Load();
//m_ProvinceList.SetCurSel(m_SelProvince);
}
//保存状态报告
void CProvinceDlg::OnSavereport()
{
m_bSavereport=!m_bSavereport;
if(m_Action!=NULL)
m_Action->SetSaveReport(m_bSavereport);
}
//初始化ListCtrl
void CProvinceDlg::InitListCtrl()
{
m_ThreadsList.DeleteAllItems();
int i=0,ThreadsNum=m_MtThreadNum+m_MoThreadNum ;
CString csID;
//0是Mo,1是Mt
for(i=0;i<ThreadsNum;i++)
{
UINT SubmitMsgs,DeliverMsgs,DeliveredMsgs,ReconnectTimes;
csID.Format("%d",i);
CString csConnectStatus;
m_Action->GetMsgNum(SubmitMsgs,DeliverMsgs,DeliveredMsgs,ReconnectTimes,i);
m_Action->GetConnectStatus(csConnectStatus,i);//得到连接状态
if(i<m_MtThreadNum)//Mt
m_ThreadsList.InsertItem(i,"Mt线程");
else
m_ThreadsList.InsertItem(i,"Mo线程");
csID.Format("%d",DeliverMsgs);
m_ThreadsList.SetItemText(i,1,csID);
csID.Format("%d",SubmitMsgs);
m_ThreadsList.SetItemText(i,2,csID);
csID.Format("%d",DeliveredMsgs);
m_ThreadsList.SetItemText(i,3,csID);
csID.Format("%d",ReconnectTimes);
m_ThreadsList.SetItemText(i,4,csID);
m_ThreadsList.SetItemText(i,5,csConnectStatus);
}
}
//显示信息
void CProvinceDlg::RefrashListCtrl()
{
int i=0,ThreadsNum=m_MtThreadNum+m_MoThreadNum;
CString csID;
//0是Mo,1是Mt
for(i=0;i<ThreadsNum;i++)
{
UINT SubmitMsgs,DeliverMsgs,DeliveredMsgs,ReconnectTimes;
csID.Format("%d",i);
CString csConnectStatus;
m_Action->GetMsgNum(SubmitMsgs,DeliverMsgs,DeliveredMsgs,ReconnectTimes,i);
m_Action->GetConnectStatus(csConnectStatus,i);//得到连接状态
csID.Format("%d",DeliverMsgs);
m_ThreadsList.SetItemText(i,1,csID);
csID.Format("%d",SubmitMsgs);
m_ThreadsList.SetItemText(i,2,csID);
csID.Format("%d",DeliveredMsgs);
m_ThreadsList.SetItemText(i,3,csID);
csID.Format("%d",ReconnectTimes);
m_ThreadsList.SetItemText(i,4,csID);
m_ThreadsList.SetItemText(i,5,csConnectStatus);
}
}
//显示所有基本接入信息
void CProvinceDlg::DisplayAllInfo(int Index)
{
m_csControlQueue=m_ProvinceArray.GetAt(Index).m_csControlQueue ;
m_csICPID=m_ProvinceArray.GetAt(Index).m_csICPID ;
m_csInQueue=m_ProvinceArray.GetAt(Index).m_csInQueue;
m_csIsmgIP=m_ProvinceArray.GetAt(Index).m_csIsmgIP;
m_csIsmgPassword=m_ProvinceArray.GetAt(Index).m_csIsmgPassword;
m_IsmgPort=m_ProvinceArray.GetAt(Index).m_IsmgPort;
m_IsmgUserID=m_ProvinceArray.GetAt(Index).m_IsmgUserID;
m_csOutQueue=m_ProvinceArray.GetAt(Index).m_csOutQueue;
m_csReportQueue=m_ProvinceArray.GetAt(Index).m_csReportQueue;
m_csSpyQueue=m_ProvinceArray.GetAt(Index).m_csSpyQueue;
m_LocalPort=m_ProvinceArray.GetAt(Index).m_LocalPort;
m_ServiceNumber=m_ProvinceArray.GetAt(Index).m_ServiceNumber;
m_MtThreadNum=m_ProvinceArray.GetAt(Index).m_MtThreadNum;
m_MoThreadNum=m_ProvinceArray.GetAt(Index).m_MoThreadNum;
m_SourceNode=m_ProvinceArray.GetAt(Index).m_csSourceNode;
UpdateData(FALSE);
}
void CProvinceDlg::OnSelchangeProvincename()
{
m_SelProvince=m_ProvinceList.GetCurSel();
DisplayAllInfo(m_SelProvince);
if(m_Action!=NULL)
m_Action->SetDisplayProvince(m_SelProvince);
}
void CProvinceDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
//CString WindowText="联通短息网关";
//
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -