www.pudn.com > TCPIPAnalyse1.rar > IrisAnalyseViewR.cpp


// IrisAnalyseViewR.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "irisanalyse.h" 
#include "IrisAnalyseViewR.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CIrisAnalyseViewR 
 
IMPLEMENT_DYNCREATE(CIrisAnalyseViewR, CListView) 
 
CIrisAnalyseViewR::CIrisAnalyseViewR() 
{ 
	m_nFileLength = 0; 
} 
 
CIrisAnalyseViewR::~CIrisAnalyseViewR() 
{ 
} 
 
 
BEGIN_MESSAGE_MAP(CIrisAnalyseViewR, CListView) 
	//{{AFX_MSG_MAP(CIrisAnalyseViewR) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CIrisAnalyseViewR drawing 
 
void CIrisAnalyseViewR::OnDraw(CDC* pDC) 
{ 
	CIrisAnalyseDoc * pDoc = GetDocument(); 
	// TODO: add draw code here 
	pDC->MoveTo(20,20); 
	pDC->LineTo(100,100); 
AfxMessageBox("OnDraw"); 
	m_nFileLength = pDoc->GetDataLen(); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CIrisAnalyseViewR diagnostics 
 
#ifdef _DEBUG 
void CIrisAnalyseViewR::AssertValid() const 
{ 
	CListView::AssertValid(); 
} 
 
void CIrisAnalyseViewR::Dump(CDumpContext& dc) const 
{ 
	CListView::Dump(dc); 
} 
CIrisAnalyseDoc* CIrisAnalyseViewR::GetDocument() // non-debug version is inline 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CIrisAnalyseDoc))); 
	return (CIrisAnalyseDoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CIrisAnalyseViewR message handlers 
 
void CIrisAnalyseViewR::OnInitialUpdate()  
{ 
	//CListView::OnInitialUpdate(); 
	CIrisAnalyseDoc* pDoc = GetDocument(); 
	// TODO: Add your specialized code here and/or call the base class 
	CListCtrl& lc = GetListCtrl(); 
	 
	::SendMessage(lc.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); 
	 
	// Add a couple of columns 
	int i; 
	static LV_COLUMN cols[5] = 
	{ 
		{ LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH, 0,50, "NO"}, 
		{ LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH, 0,250, "DATA"}, 
		{ LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH, 0,70,  "TCP" }, 
		{ LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH, 0,100,  "IP"  }, 
		{ LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH, 0,100,  "MAC" }, 
	}; 
	const int NUMCOLS = sizeof(cols)/sizeof(cols[0]); 
	for(i = 0; iSetWindowText("hello"); 
	CIrisAnalyseDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
	CListCtrl& lcr = GetListCtrl(); 
	///////////////////////////////// 
	char temp2[20]; 
	strcpy(temp2,(char *)pDoc->m_sHead.buff); 
	TCPIPPKG *pr,*p; 
	pr=pDoc->m_pRightDataHead; 
	p=pDoc->m_pLeftDataHead; 
 
////////////////////////////////////////// 
	int i; 
//	int NoRight = 0; 
	CString s; 
	for(i=0;pr!=NULL;i++) 
	{    
 
        unsigned char temp[100][48]; 
 
		//display left no 
		s.Format("[%d]",pr->Num);//NoRight); 
		lcr.InsertItem(i,s); 
 
		//if data without above of two clu 
		if( (pr->nLine==0) ||( pr->nLine==1) ) 
		{ 
 
			if(pr->DataLen!=0) 
			{ 
		        
	           int nRetData=pDoc->HexToAscll(&temp[0][0], 
				                           pr->databuff, 
			                               pr->DataLen);		    
               lcr.SetItemText(i,1,(char*)temp); 
			} 
	        else 
			{ 
				if (pr->tcppkg.SrcPort == 0) 
				{ 
					lcr.SetItemText(i,1,"[-----]");//ARP---add by chenjw 
				} 
				else 
				{ 
					lcr.SetItemText(i,1,"[NULL]");//no data 
				} 
			}	 
 
			//display left tcp srcport 
			if (pr->tcppkg.SrcPort == 0) 
			{ 
				lcr.SetItemText(i,2,"[-----]");//ARP---add by chenjw 
			} 
			else 
			{ 
	      		CString tcptemp; 
				tcptemp.Format(TEXT("%d"),pr->tcppkg.SrcPort); 
	    		lcr.SetItemText(i,2,tcptemp); 
			} 
			//display left ip srcip 
    	    CString iptemp; 
            iptemp.Format(TEXT(" %d.%d.%d.%d"), 
			                  pr->ippkg.srcIP[0], 
	                          pr->ippkg.srcIP[1], 
	                          pr->ippkg.srcIP[2], 
	                          pr->ippkg.srcIP[3]); 
	    	lcr.SetItemText(i,3,iptemp); 
 
			//display  left mac srcaddr 
            int nRetMac=pDoc->HexToAscll(&temp[0][0], 
			                            pr->macpkg.SrcAddr,6); 
		    lcr.SetItemText(i,4,(char*)temp); 
		} 
		else //have many clu data 
		{	 
			int j; 
			int nRetData=pDoc->HexToAscll(&temp[0][0], 
				                        pr->databuff, 
			                            pr->DataLen);		    
            lcr.SetItemText(i,1,(char*)&temp[0][0]); 
 
			CString tcptemp; 
		    tcptemp.Format(TEXT("%d"),pr->tcppkg.SrcPort); 
	    	lcr.SetItemText(i,2,tcptemp); 
 
		    CString iptemp; 
            iptemp.Format(TEXT(" %d.%d.%d.%d"), 
			                  pr->ippkg.srcIP[0], 
	                          pr->ippkg.srcIP[1], 
	                          pr->ippkg.srcIP[2], 
	                          pr->ippkg.srcIP[3]); 
	    	lcr.SetItemText(i,3,iptemp); 
			 
	      	int nRetMac=pDoc->HexToAscll(&temp[0][0], 
			                           pr->macpkg.SrcAddr,6); 
		    lcr.SetItemText(i,4,(char*)temp); 
			 
			for(j=1;jHexToAscll(&temp[0][0], 
					                       pr->databuff, 
			                               pr->DataLen);		    
               lcr.SetItemText(i+j,1,(char*)&temp[j][0]); 
			   lcr.SetItemText(i+j,2," "); 
			   lcr.SetItemText(i+j,3," "); 
			   lcr.SetItemText(i+j,4," "); 
			} 
			//return i value 
			i+=pr->nLine-1; 
		}					 
		pr=pr->next; 
	}//for(;;) 
 
	return 0; 
}	 
///////////////////////////////////////////////////