📄 apptabc.cpp
字号:
#include "stdafx.h"
#include "apptabc.h"
#if defined (ARX_WITH_MFC) && defined (_DEBUG)
// #define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif // defined (ARX_WITH_MFC) && defined (_DEBUG)
#pragma warning ( disable : 4711 )
/////////////////////////////////////////////////////////////////////////////
// CAppTabCtrl
CAppTabCtrl::CAppTabCtrl ()
{
m_pWnd = this;
}
CAppTabCtrl:: ~ CAppTabCtrl ()
{
}
BEGIN_MESSAGE_MAP (CAppTabCtrl, CSizedTabCtrl)
//{{AFX_MSG_MAP( CAppTabCtrl )
ON_WM_CREATE ()
ON_WM_SIZE ()
ON_WM_DESTROY ()
ON_NOTIFY_REFLECT (TCN_SELCHANGE, OnTabChanged)
//}}AFX_MSG_MAP
END_MESSAGE_MAP ()
int CAppTabCtrl::
AddTabItem (int nId, LPCTSTR lpszTitle, HWND hChild)
{
int nNumber = GetItemCount ();
TC_ITEM tci;
tci.mask = TCIF_TEXT | TCIF_PARAM;
tci.pszText = (LPTSTR) lpszTitle;
tci.lParam = (LPARAM) hChild;
#pragma warning ( disable : 4552 )
VERIFY (InsertItem (nNumber, &tci) != -1);
#pragma warning ( default : 4552 )
SetCurSel (nNumber);
return nNumber;
}
void CAppTabCtrl::
RemoveTabItem (int nNumber)
{
DeleteItem (nNumber);
if (nNumber >= GetItemCount ())
{
nNumber--;
}
if (nNumber >= 0)
{
SetCurSel (nNumber);
}
}
void CAppTabCtrl::
RemoveTabItem (CWnd *pWnd)
{
RemoveTabItem (pWnd->GetSafeHwnd ());
}
void CAppTabCtrl::
RemoveTabItem (HWND hWnd)
{
int id = GetTabWndId (hWnd);
if (id != -1)
RemoveTabItem (id);
}
/////////////////////////////////////////////////////////////////////////////
// CAppTabCtrl message handlers
int CAppTabCtrl::OnCreate (LPCREATESTRUCT lpCreateStruct)
{
if (CSizedTabCtrl::OnCreate (lpCreateStruct) == -1)
return -1;
// m_butBottom.Create( NULL, WS_CHILD | WS_VISIBLE, CRect( 0, 0, 80, 40 ), this, 1 );
// AddChild( m_butBottom.GetSafeHwnd(), ORD_FULL_END, CRect( 0, 0, 0, 0 ), NULL );
/*CRect rect( 0, 0, 80, 40 );
CStatic *pCtrl = new CStatic;
DWORD dwStyle = WS_BORDER | WS_CHILD | SS_CENTER | SS_CENTERIMAGE;
if(!pCtrl->Create(_T("Place for control"), dwStyle, rect, this))
return -1;
pCtrl->ModifyStyleEx(0, WS_EX_CLIENTEDGE);
pCtrl->SetFont(CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT)));
TC_ITEM TCI;
TCI.mask = TCIF_TEXT | TCIF_PARAM;
TCI.pszText = _T("Label");
TCI.lParam = (LPARAM) pCtrl;
VERIFY(InsertItem(0, &TCI) != -1);
AdjustRect( FALSE, &rect );
rect.left -= 3;
rect.top -= 3;
rect.right += 2;
rect.right = 80 - rect.right;
rect.bottom = 40 - rect.bottom;
AddChild( pCtrl->GetSafeHwnd(), ORD_SET_BEGIN | ORD_SET_BACK_END, rect, NULL );
rect.SetRect( 0, 0, 80, 40 );
pCtrl = new CStatic;
if(!pCtrl->Create(_T("Place for control 2"), dwStyle, rect, this))
return -1;
pCtrl->ModifyStyleEx(0, WS_EX_CLIENTEDGE);
pCtrl->SetFont(CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT)));
TCI.mask = TCIF_TEXT | TCIF_PARAM;
TCI.pszText = _T("Label 2");
TCI.lParam = (LPARAM) pCtrl;
VERIFY(InsertItem(1, &TCI) != -1);
AdjustRect( FALSE, &rect );
rect.left -= 3;
rect.top -= 3;
rect.right += 2;
rect.right = 80 - rect.right;
rect.bottom = 40 - rect.bottom;
AddChild( pCtrl->GetSafeHwnd(), ORD_SET_BEGIN | ORD_SET_BACK_END, rect, NULL );
ShowSelTabWnd(); */
return 0;
}
void CAppTabCtrl::
OnSize (UINT nType, int cx, int cy)
{
CSizedTabCtrl::OnSize (nType, cx, cy);
if (cx >= 0 && cy >= 0 && cx < 65520 && cy < 65520)
{
COrderer::OnSize (nType, cx, cy);
}
}
void CAppTabCtrl::
GetTabItemOffsets (LPRECT rect)
{
int cx, cy;
GetClientRect (rect);
cx = rect->right;
cy = rect->bottom;
AdjustRect (FALSE, rect);
rect->left -= 3;
rect->top -= 3;
rect->right += 2;
rect->right = cx - rect->right;
rect->bottom = cy - rect->bottom;
}
CWnd *CAppTabCtrl::
GetTabWnd (int nTab)
{
TC_ITEM tci;
tci.mask = TCIF_PARAM;
GetItem (nTab, &tci);
ASSERT (tci.lParam);
return CWnd::FromHandle ((HWND) tci.lParam);
}
HWND CAppTabCtrl::
GetTabWndHandle (int nTab)
{
TC_ITEM tci;
tci.mask = TCIF_PARAM;
GetItem (nTab, &tci);
ASSERT (tci.lParam);
return (HWND) tci.lParam;
}
int CAppTabCtrl::
GetTabWndId (CWnd * pWnd)
{
return GetTabWndId (pWnd->GetSafeHwnd ());
}
int CAppTabCtrl::
GetTabWndId (HWND hWnd)
{
TC_ITEM tci;
int nCount = GetItemCount ();
tci.mask = TCIF_PARAM;
for (int i = 0; i < nCount; i++)
{
GetItem (i, &tci);
ASSERT (tci.lParam);
if ((HWND) tci.lParam == hWnd)
{
return i;
}
}
return -1;
}
void CAppTabCtrl::
ShowSelTabWnd ()
{
int nCount = GetItemCount ();
if (nCount)
{
int nSel = GetCurSel ();
CWnd *pWnd;
ASSERT (nSel != -1);
for (int i = 0; i < nCount; i++)
if (i != nSel)
GetTabWnd (i)->ShowWindow (SW_HIDE);
else
pWnd = GetTabWnd (i);
pWnd->ShowWindow (SW_SHOW);
// pWnd->SetFocus();
// pWnd->RedrawWindow( NULL, NULL, RDW_ERASE | RDW_NOCHILDREN | RDW_FRAME | RDW_INVALIDATE );
}
}
void CAppTabCtrl::
OnDestroy ()
{
for (int i = 0; i < GetItemCount (); i++)
GetTabWnd (i)->DestroyWindow ();
CSizedTabCtrl::OnDestroy ();
}
#pragma warning ( disable : 4100 )
void CAppTabCtrl::
OnTabChanged (NMHDR * pNM, LRESULT * pResult)
{
ShowSelTabWnd ();
*pResult = TRUE;
}
#pragma warning ( default : 4100 )
/////////////////////////////////////////////////////////////////////////////
#pragma warning ( default : 4711 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -