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

📄 tabsheet.cpp

📁 MFC类库祥解, MFC类库祥解
💻 CPP
字号:
// TabSheet.cpp : implementation file
//

#include "stdafx.h"
#include "TabSheet.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTabSheet

CTabSheet::CTabSheet()
{
	m_iCurPage = -1;
}

CTabSheet::~CTabSheet()
{
}


BEGIN_MESSAGE_MAP(CTabSheet, CTabCtrl)
	//{{AFX_MSG_MAP(CTabSheet)
	ON_WM_SIZE()
	ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelChange)
	ON_WM_SETFOCUS()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTabSheet message handlers

BOOL CTabSheet::Create(CWnd *pParent, const RECT& rc, DWORD dwStyle, UINT nID)
{
	ASSERT(pParent);
	if ( !CTabCtrl::Create(dwStyle | TCS_HOTTRACK, rc, pParent, nID) )
		return FALSE ;

	return TRUE;
}

BOOL CTabSheet::AddPage(CWnd *pWnd, LPCTSTR lpszTitle, HICON hIcon)
{
	ASSERT(pWnd != NULL);
	ASSERT(IsWindow(pWnd->m_hWnd));
	ASSERT(pWnd->GetParent()->GetSafeHwnd() == GetSafeHwnd());

	PAGE_INFO	pi;
	if ( lpszTitle != NULL )
		pi.csTitle = lpszTitle;
	else
		GetWindowText(pi.csTitle);
	pi.hIcon = hIcon;
	pi.hWnd = pWnd->GetSafeHwnd();

	m_arrPage.Add(pi);
	pWnd->ModifyStyleEx(0, WS_EX_CLIENTEDGE);
	InsertItem(m_arrPage.GetUpperBound(), pi.csTitle);

	if ( m_arrPage.GetSize() == 1 )
	{
		m_iCurPage = 0;
		pWnd->ShowWindow(SW_SHOW);
		pWnd->SetFocus();
		SetCurSel(0);
		AdjustContentSize();
	}
	else
		pWnd->ShowWindow(SW_HIDE);

	return TRUE;
}

void CTabSheet::OnSize(UINT nType, int cx, int cy) 
{
	CTabCtrl::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	GetClientRect(m_rcClient);
//	m_rcClient = CRect(0,0,cx,cy);
	AdjustRect(FALSE, m_rcClient);
//	m_rcClient.top = 0 ;
//	m_rcClient.left = 0 ;
//	m_rcClient.right = cx ;

	AdjustContentSize();
}

void CTabSheet::AdjustContentSize()
{

	int iSel = GetCurSel();
	if ( iSel < 0 || iSel >= m_arrPage.GetSize() )
		return ;

	HWND hWnd = m_arrPage[iSel].hWnd ;
	if ( !IsWindow(hWnd))
		return ;

	::MoveWindow(hWnd, m_rcClient.left, m_rcClient.top, m_rcClient.Width(), m_rcClient.Height(), TRUE);

}

void CTabSheet::OnSelChange(NMHDR* lpNMHDR, LRESULT* pResult)
{
	pResult = 0;

	HWND hWnd = m_arrPage[m_iCurPage].hWnd ;
	::ShowWindow(hWnd, SW_HIDE);

	m_iCurPage = GetCurSel();
	ASSERT( m_iCurPage >= 0 );
	hWnd = m_arrPage[m_iCurPage].hWnd ;
	::ShowWindow(hWnd, SW_SHOW);
	::SetFocus(hWnd);

	::MoveWindow(hWnd, m_rcClient.left, m_rcClient.top, m_rcClient.Width(), m_rcClient.Height(), TRUE);

}

void CTabSheet::OnSetFocus(CWnd* pOldWnd) 
{
	if ( m_iCurPage >= 0 && m_iCurPage < m_arrPage.GetSize() )
	{
		::SetFocus(m_arrPage[m_iCurPage].hWnd);
	}
	else

		CTabCtrl::OnSetFocus(pOldWnd);	

}

BOOL CTabSheet::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo )
{
	for ( int i = 0; i < m_arrPage.GetSize(); i ++ )
	{
		if ( IsWindow(m_arrPage[i].hWnd) )
		{
			CWnd* pWnd = CWnd::FromHandle(m_arrPage[i].hWnd);
			if ( pWnd->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo) )
				return TRUE;
		}
	}
	
	return FALSE;
}

⌨️ 快捷键说明

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