📄 tabview.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 + -