www.gusucode.com > VC++的窗体TabView标签切换实现-源码程序 > VC++的窗体TabView标签切换实现-源码程序/code/MyView3.cpp

    // IntListView.cpp : implementation file
// Download by http://www.NewXing.com

#include "stdafx.h"
#include "Tab2.h"
#include "Tab2Doc.h"
#include "MyView3.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyView3

IMPLEMENT_DYNCREATE(CMyView3, CListView)

CMyView3::CMyView3()
{
}

CMyView3::~CMyView3()
{
}


BEGIN_MESSAGE_MAP(CMyView3, CListView)
	//{{AFX_MSG_MAP(CMyView3)
	ON_WM_TIMER()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyView3 drawing

void CMyView3::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CMyView3 diagnostics

#ifdef _DEBUG
void CMyView3::AssertValid() const
{
	CListView::AssertValid();
}

void CMyView3::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyView3 message handlers

BOOL CMyView3::PreCreateWindow(CREATESTRUCT& cs) 
{
	// TODO: Add your specialized code here and/or call the base class
	cs.style |= LVS_SHOWSELALWAYS | LVS_REPORT;
	
	return CListView::PreCreateWindow(cs);
}

void CMyView3::OnInitialUpdate() 
{
	CListView::OnInitialUpdate();
	
	LV_COLUMN lvcolumn;
	LV_ITEM lvitem;

	CListCtrl &rListCtrl = GetListCtrl();
    lvcolumn.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
    lvcolumn.fmt=LVCFMT_CENTER;
    lvcolumn.cx=80;

    lvcolumn.iSubItem=0;
    lvcolumn.pszText="Column1";
	rListCtrl.InsertColumn(0,&lvcolumn);

    lvcolumn.iSubItem=1;
    lvcolumn.pszText="Column2";
	rListCtrl.InsertColumn(1,&lvcolumn);

    lvcolumn.iSubItem=2;
    lvcolumn.pszText="Column3";
	rListCtrl.InsertColumn(2,&lvcolumn);


	CString str;
	str.Format("%d ",0);
	lvitem.mask=LVIF_TEXT;
    lvitem.pszText=str.GetBuffer(10);

    lvitem.iItem= 0;
    lvitem.iSubItem= 0;
    rListCtrl.InsertItem(&lvitem);

    lvitem.iItem= 0;
    lvitem.iSubItem= 1;
    rListCtrl.SetItem(&lvitem);	

    lvitem.iItem= 0;
    lvitem.iSubItem= 2;
    rListCtrl.SetItem(&lvitem);	

	//启动定时器
	SetTimer(2,500,NULL);
}

void CMyView3::OnTimer(UINT nIDEvent) 
{
    
	unsigned int m_Increase;
	LV_ITEM lvitem;
	CString str;

	if(nIDEvent==2)
	{
	    m_Increase=((CTab2Doc*)GetDocument())->m_Accumulater++;

	    CListCtrl &ListCtrl = GetListCtrl();

	    str.Format("%d ",m_Increase);
	    lvitem.mask=LVIF_TEXT;
        lvitem.iItem= 0;
        lvitem.iSubItem= 1;
        lvitem.pszText=str.GetBuffer(5);
        ListCtrl.SetItem(&lvitem);	
	}
}


BOOL CMyView3::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	KillTimer(2);

	return CListView::DestroyWindow();
}

int CMyView3::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CListView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// set list control's style to hilight the entire row
	DWORD dwStyle = SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);

	/*设置ListView的风格*/
	dwStyle |= LVS_EX_FULLROWSELECT   /*整行选择*/ 
		       |LVS_EX_GRIDLINES      /*加入横竖线*/
			   |LVS_EX_HEADERDRAGDROP;/*拖拉*/

	SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);	
	return 0;
}