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

📄 tabview.cpp

📁 VC源代码大全(精华版)
💻 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

CString g_strText = "This is a multiline edit control with"
                    " scrolling.\r\nThe view will not"
                    " notify you if this control has\r\n"
                    "been modified. You will have to test "
                    "m_Edit.GetModify()\r\nwhen the "
                    "application is closing and before the"
                    " window\r\nis destroyed.";

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

IMPLEMENT_DYNCREATE(CTabView, CCtrlView)

BEGIN_MESSAGE_MAP(CTabView, CCtrlView)
	//{{AFX_MSG_MAP(CTabView)
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchangeSampletab)
	ON_NOTIFY_REFLECT(TCN_SELCHANGING, OnSelchangingSampletab)
	ON_COMMAND(ID_FILE_PRINT, CCtrlView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CCtrlView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CCtrlView::OnFilePrintPreview)
END_MESSAGE_MAP()

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

CTabView::CTabView()
		 : CCtrlView (_T("SysTabControl32"), AFX_WS_DEFAULT_VIEW)
{
	m_bInitialized = false;
}

CTabView::~CTabView()
{
}

BOOL CTabView::PreCreateWindow(CREATESTRUCT& cs)
{
	::InitCommonControls ();
//	cs.style |= TCS_FIXEDWIDTH;
//	cs.style |= TCS_BUTTONS;
	CCtrlView::PreCreateWindow(cs);
	return (TRUE);
}

/////////////////////////////////////////////////////////////////////////////
// CTabView drawing

void CTabView::OnDraw(CDC* pDC)
{
	CTabDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CTabView printing

BOOL CTabView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CTabView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CTabView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

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

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

void CTabView::Dump(CDumpContext& dc) const
{
	CCtrlView::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

CTabCtrl& CTabView::GetTabCtrl()
{
	return (*((CTabCtrl *) this));
}

void CTabView::OnInitialUpdate() 
{
// Do not call the base class OnInitialUpdate
//	CCtrlView::OnInitialUpdate();

	if (m_bInitialized== true)
	{
		Reinitialize ();
		return;
	}

	if (m_Images.m_hImageList == NULL)
	{
		HICON hIcon;
		m_Images.Create (32, 32, ILC_MASK, 6, 6);
		HINSTANCE hInst = AfxGetInstanceHandle ();
		hIcon = LoadIcon (hInst, MAKEINTRESOURCE(IDI_PAGEONE_CLOSED));
		m_Images.Add (hIcon);
		hIcon = LoadIcon (hInst, MAKEINTRESOURCE(IDI_PAGEONE_OPEN));
		m_Images.Add (hIcon);
		hIcon = LoadIcon (hInst, MAKEINTRESOURCE(IDI_PAGETWO_CLOSED));
		m_Images.Add (hIcon);
		hIcon = LoadIcon (hInst, MAKEINTRESOURCE(IDI_PAGETWO_OPEN));
		m_Images.Add (hIcon);
		hIcon = LoadIcon (hInst, MAKEINTRESOURCE(IDI_PAGETHREE_CLOSED));
		m_Images.Add (hIcon);
		hIcon = LoadIcon (hInst, MAKEINTRESOURCE(IDI_PAGETHREE_OPEN));
		m_Images.Add (hIcon);
		GetTabCtrl().SetImageList (&m_Images);
	}
	m_Edit.Create (WS_VSCROLL| WS_HSCROLL | ES_MULTILINE | ES_WANTRETURN, CRect (10, 10, 100, 100), this, 0);
	m_Animate.Create (IDD_TAB1_DLG, this);

	TC_ITEM TabItem;
	memset (&TabItem, '\0', sizeof (TC_ITEM));
	TabItem.mask = TCIF_TEXT | TCIF_PARAM | TCIF_IMAGE;
	TabItem.iImage = 1;
	TabItem.lParam = (long) &m_Edit;
	TabItem.pszText = "Edit";
	GetTabCtrl().InsertItem (0, &TabItem);
	TabItem.pszText = "Animate";
	TabItem.lParam = (long) &m_Animate;
	TabItem.iImage = 2;
	GetTabCtrl().InsertItem (1, &TabItem);
	TabItem.pszText = "Whatever";
	TabItem.lParam = 0;
	TabItem.iImage = 4;
	GetTabCtrl().InsertItem (2, &TabItem);
	GetTabCtrl().ShowWindow (SW_NORMAL);

	CRect rcItem, rc;
	GetTabCtrl().GetItemRect (0, rcItem);
	GetTabCtrl().GetClientRect (rc);
	rc.top = rcItem.bottom + 4;
	m_Edit.SetWindowText (g_strText);
	m_Edit.MoveWindow (rc, FALSE);
	m_Edit.ShowWindow (SW_NORMAL);
	m_Animate.MoveWindow (rc, FALSE);
	m_bInitialized = true;
}

void CTabView::Reinitialize()
{
	m_Edit.SetWindowText (_T(""));
}

BOOL CTabView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
	if (!CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext))
		return (FALSE);
	return (TRUE);
}

void CTabView::OnSelchangingSampletab (NMHDR* pNMHDR, LRESULT* pResult)
{
TC_ITEM		ti;
CWnd*		cDlg;
int			result;

	// TODO: Add your control notification handler code here

	int sel = GetTabCtrl().GetCurSel();
	ti.mask = TCIF_PARAM | TCIF_IMAGE;
	result = GetTabCtrl().GetItem (sel, &ti);
	cDlg = (CWnd *) ti.lParam;
	if (cDlg)
		cDlg->ShowWindow (SW_HIDE);
	ti.mask = TCIF_IMAGE;
	ti.iImage -= 1;
	GetTabCtrl().SetItem (sel, &ti);
	*pResult = 0;
}

void CTabView::OnSelchangeSampletab (NMHDR* pNMHDR, LRESULT* pResult)
{
TC_ITEM		ti;
CWnd*		cDlg;
int			result;

	// TODO: Add your control notification handler code here

	int sel = GetTabCtrl().GetCurSel();
	ti.mask = TCIF_PARAM | TCIF_IMAGE;
	result = GetTabCtrl().GetItem (sel, &ti);
	cDlg = (CWnd *) ti.lParam;
	if (cDlg)
		cDlg->ShowWindow (SW_NORMAL);
	ti.mask = TCIF_IMAGE;
	ti.iImage += 1;
	GetTabCtrl().SetItem (sel, &ti);
	*pResult = 0;
}

void CTabView::OnSize(UINT nType, int cx, int cy) 
{
	CCtrlView::OnSize(nType, cx, cy);
	if (!m_Edit.m_hWnd)
		return;
	CRect rcItem, rc;
	GetTabCtrl().GetItemRect (0, rcItem);
	GetTabCtrl().GetClientRect (rc);
	rc.top = rcItem.bottom + 4;
	m_Edit.MoveWindow (rc, FALSE);
	m_Animate.MoveWindow (rc, FALSE);
}

⌨️ 快捷键说明

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