MFC 单文档添加ListView方法片段

来源:互联网 发布:第三次经济普查数据库 编辑:程序博客网 时间:2024/05/29 15:59
 

先建立MFC类listviewtest并继承CListView

然后重写OnInitialUpdate()

void ShowListView::OnInitialUpdate(){CListView::OnInitialUpdate();// TODO: 在此添加专用代码和/或调用基类///设置列表控件为报表风格,第一列按字母排序,并让控件总是显示选定内容//在列表上画线,分割列表的行和列,第二种风格允许用户选中整行GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);CDC *pDC = GetDC();TEXTMETRIC tm;pDC->GetTextMetrics(&tm);//向列表中添加表头GetListCtrl().InsertColumn(0,L"编号",    LVCFMT_LEFT,10*tm.tmAveCharWidth); GetListCtrl().InsertColumn(1,L"协议",    LVCFMT_LEFT,10*tm.tmAveCharWidth); GetListCtrl().InsertColumn(2,L"源地址",  LVCFMT_LEFT,20*tm.tmAveCharWidth);GetListCtrl().InsertColumn(3,L"源端口",  LVCFMT_LEFT,10*tm.tmAveCharWidth);
 ListView  添加数据void CShowListView::AddDATA(CString strProto, CString szSource, CString szSourcePort,        CString szDest,   CString DestPort, CString strSize, CString strData){ CListCtrl& showlist =GetListCtrl(); CString strTime,str; CTime ctime=CTime::GetCurrentTime(); strTime = ctime.Format("%I:%M:%S %p  %B %d %Y");//获取当前时间 CMainFrame *pFrm =(CMainFrame *)AfxGetMainWnd(); str.Format("%d",pFrm->BianHao++); int index =showlist.InsertItem(0,str); showlist.SetItemText(index,1,strProto);  showlist.SetItemText(index,2,szSource);    showlist.SetItemText(index,3,szSourcePort);    showlist.SetItemText(index,4,szDest);    showlist.SetItemText(index,5,DestPort);    showlist.SetItemText(index,6,strSize);    showlist.SetItemText(index,7,strTime);       showlist.SetItemText(index,8,strData);    }

GetListCtrl().InsertColumn(4,L"目标地址",LVCFMT_LEFT,20*tm.tmAveCharWidth);GetListCtrl().InsertColumn(5,L"目标端口",LVCFMT_LEFT,10*tm.tmAveCharWidth);GetListCtrl().InsertColumn(6,L"字节长度",LVCFMT_LEFT,30*tm.tmAveCharWidth);GetListCtrl().InsertColumn(7,L"抓取时间",LVCFMT_LEFT,30*tm.tmAveCharWidth);GetListCtrl().InsertColumn(8,L"数据", LVCFMT_LEFT,200*tm.tmAveCharWidth);}BOOL ShowListView::PreCreateWindow(CREATESTRUCT& cs){// TODO: 在此添加专用代码和/或调用基类cs.style = cs.style|LVS_REPORT; //设置成报文格式return CListView::PreCreateWindow(cs);} 在CMainFrame重写OnCreateClientBOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext){ // TODO: 在此添加专用代码和/或调用基类 CRect rect; GetClientRect(&rect); m_wndSplitter.CreateStatic(this,2,1); m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(ShowListView), CSize(rect.Width(),rect.Height()-rect.Height()/5),pContext); m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CListContorlTestView),CSize(rect.Width(),rect.Height()/5),pContext); return true; //return CFrameWnd::OnCreateClient(lpcs, pContext);}


 ListView  添加数据void CShowListView::AddDATA(CString strProto, CString szSource, CString szSourcePort,        CString szDest,   CString DestPort, CString strSize, CString strData){   CListCtrl& showlist =GetListCtrl();   CString strTime,str;   CTime ctime=CTime::GetCurrentTime();  strTime = ctime.Format("%I:%M:%S %p  %B %d %Y");//获取当前时间 CMainFrame *pFrm =(CMainFrame *)AfxGetMainWnd();  str.Format("%d",pFrm->BianHao++);   int index =showlist.InsertItem(0,str);   showlist.SetItemText(index,1,strProto);    showlist.SetItemText(index,2,szSource);     showlist.SetItemText(index,3,szSourcePort);      showlist.SetItemText(index,4,szDest);      showlist.SetItemText(index,5,DestPort);     showlist.SetItemText(index,6,strSize);    showlist.SetItemText(index,7,strTime);         showlist.SetItemText(index,8,strData);    }



 CRect rect; GetClientRect(&rect);
 m_wndSplitter.CreateStatic(this,2,1);
 m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(ShowListView),  CSize(rect.Width(),rect.Height()-rect.Height()/5),pContext); m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CListContorlTestView),CSize(rect.Width(),rect.Height()/5),pContext); return true; //return CFrameWnd::OnCreateClient(lpcs, pContext);}