⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tabview.cpp

📁 VC++中Tab View的多种实现方法
💻 CPP
字号:
// tabView.cpp : implementation of the CTabView class
//

#include "stdafx.h"
#include "tab.h"

#include "tabDoc.h"
#include "tabView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTabView

IMPLEMENT_DYNCREATE(CTabView, CListView)

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

/////////////////////////////////////////////////////////////////////////////
// CTabView construction/destruction

CTabView::CTabView()
{
	m_Increase=0;
}

CTabView::~CTabView()
{
}

BOOL CTabView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	cs.style |=  LVS_SHOWSELALWAYS | LVS_REPORT;

	return CListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CTabView diagnostics

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

void CTabView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CTabDoc* CTabView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTabDoc)));
	return (CTabDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CTabView message handlers


void CTabView::OnInitialUpdate() 
{
	CListView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	LV_COLUMN lvcolumn;
	LV_ITEM lvitem;

	CListCtrl &rListCtrl = GetListCtrl();
    lvcolumn.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
    lvcolumn.fmt=LVCFMT_CENTER;
    lvcolumn.iSubItem=0;
    lvcolumn.pszText="Column1";
    lvcolumn.cx=80;
	rListCtrl.InsertColumn(0,&lvcolumn);

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

	CString str;
	str.Format("%d ",m_Increase);
	lvitem.mask=LVIF_TEXT;
    lvitem.iItem= 0;
    lvitem.iSubItem= 0;
    lvitem.pszText=str.GetBuffer(10);
    rListCtrl.InsertItem(&lvitem);

    lvitem.iItem= 0;
    lvitem.iSubItem= 1;
    lvitem.pszText=str.GetBuffer(10);
    rListCtrl.SetItem(&lvitem);

	SetTimer(1,500,NULL);	
}

int CTabView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CListView::OnCreate(lpCreateStruct) == -1)
		return -1;

	DWORD dwStyle=0;
	// set list control's style to hilight the entire row
	//SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE,0,(LPARAM)dwStyle);

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

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

	return 0;
}

void CTabView::OnTimer(UINT nIDEvent) 
{
	if(nIDEvent==1)
	{
	    LV_ITEM lvitem;
	    m_Increase=((CTabDoc*)GetDocument())->m_Accumulater++;

	    CListCtrl &ListCtrl = GetListCtrl();

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

BOOL CTabView::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	KillTimer(1);
	return CListView::DestroyWindow();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -