📄 ylfbusysysmsgfile.cpp
字号:
// ylfBusySysMsgFile.cpp: implementation of the ylfBusySysMsgFile class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MsgDetail.h"
#include "ylfBusySysMsgFile.h"
#include "ylfCommon.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ylfBusySysMsgFile::ylfBusySysMsgFile()
{
pBuffer=NULL;
BufLen=0;
}
ylfBusySysMsgFile::~ylfBusySysMsgFile()
{
if(pBuffer!=NULL)delete[] pBuffer;
}
void ylfBusySysMsgFile::Add(BYTE *pData)
{
}
void ylfBusySysMsgFile::Clear()
{
}
void ylfBusySysMsgFile::NewBuffer(int len)
{
if(pBuffer!=NULL)delete[] pBuffer;
pBuffer=new BYTE[len];
BufLen=len;
}
void ylfBusySysMsgFile::LoadEnd()
{
}
BYTE* ylfBusySysMsgFile::GetBuffer()
{
return pBuffer;
}
#define COLCOUNT 6
void ylfBusySysMsgFile::BuildColumns(CListCtrl &listc)
{
int nWidth[COLCOUNT]={
60,90,90,130,130,200};
CString strColumn[COLCOUNT]={
"ID","主叫","被叫",
"开始时间","结束时间","原因"
};
int nFmt[COLCOUNT]={
LVCFMT_RIGHT,LVCFMT_RIGHT,LVCFMT_RIGHT,LVCFMT_LEFT,LVCFMT_LEFT,LVCFMT_LEFT
};
ylfCommon::BuildColumns(listc,COLCOUNT,nWidth,strColumn,nFmt);
}
void ylfBusySysMsgFile::UpdateList(CListCtrl &listc)
{
listc.DeleteAllItems();
BYTE data1[100];
int pos=0;
int& MSG_FILE_POS=*((int*)(data1+pos));pos+=4;
char* CALLED_NO=(char*)(data1+pos);pos+=20;
char* CALLING_NO=(char*)(data1+pos);pos+=20;
char* IAM_TIME=(char*)(data1+pos);pos+=20;
char* END_TIME=(char*)(data1+pos);pos+=20;
int& IAM_TIME_MSEC=*((int*)(data1+pos));pos+=4;
int& REL_TIME_MSEC=*((int*)(data1+pos));pos+=4;
int& RELEASE_CODE=*((int*)(data1+pos));pos+=4;
int count=BufLen/100;
int line=0;
CString str;
char msg[200];
for(int i=0;i<count;i++)
{
if(i%2==0&&i!=0)
{
str="****";
listc.InsertItem(100000,str,0);
line++;
}
memcpy(data1,pBuffer+i*100,100);
str.Format("%d",MSG_FILE_POS);
line=listc.InsertItem(100000,str,0);
listc.SetItemText(line, 1, CALLING_NO);
listc.SetItemText(line, 2, CALLED_NO);
listc.SetItemText(line, 3, IAM_TIME);
listc.SetItemText(line, 4, END_TIME);
ylfCommon::GetRecasueString(RELEASE_CODE,msg,200);
listc.SetItemText(line, 5, msg);
line++;
}
}
void ylfBusySysMsgFile::UpdateCDRMsg(UINT filepos,CString filePath, CShowMsgList &msgList)
{
CFile f;
if(!f.Open(filePath,CFile::modeRead))
{
AfxMessageBox("打不开原始cdr文件");
return;
}
CTime endT=CTime::GetCurrentTime()+CTimeSpan(0,0,0,20);
UINT msgFilePos=filepos;
int n=0;
WORD msglen=0;
UINT id=0;
BYTE msgBuf[500];
while(msgFilePos!=0xffffffff)
{
if(CTime::GetCurrentTime()>endT)break;
int len=f.GetLength();
if(msgFilePos>=len)break;
f.Seek(msgFilePos,CFile::begin);
int off=0;
n=f.Read(&msglen,2);
if(n!=2||msglen<6||msglen>300)
{
AfxMessageBox("原始cdr文件格式错");
break;
}
n=f.Read(&id,4);if(n<4)break;
BYTE nfile;
n=f.Read(&nfile,1);if(n<1)break;
msgFilePos=id;
n=f.Read(msgBuf+2,msglen-7);if(n<msglen-7)break;
*((WORD*)msgBuf)=msglen-5;
if(!msgList.Add(msgBuf+2))
{
break;
}
}
f.Close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -