?? mytab.cpp
字號:
// MyTab.cpp : implementation file
//
#include "stdafx.h"
#include "MyTab.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyTab
CMyTab::CMyTab()
{
m_itemcount=0;
m_ptTabs.x=4;
m_ptTabs.y=28;
m_bMove=true;
m_ispeed=10;
m_clrFor = RGB(255,0,0);
m_clrBk = RGB(0,163,8);
m_brush.CreateSolidBrush(m_clrBk);
}
CMyTab::~CMyTab()
{
}
BEGIN_MESSAGE_MAP(CMyTab, CTabCtrl)
//{{AFX_MSG_MAP(CMyTab)
ON_WM_CTLCOLOR()
ON_WM_TIMER()
ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchange)
ON_NOTIFY_REFLECT(TCN_SELCHANGING, OnSelchanging)
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyTab message handlers
void CMyTab::AddItem(CWnd *pwnd, LPTSTR name)
{
TCITEM item;
item.mask = TCIF_TEXT|TCIF_PARAM;
item.lParam = (LPARAM) pwnd;
item.pszText = name;
InsertItem(m_itemcount, &item);
pwnd->SetWindowPos(NULL, m_ptTabs.x, m_ptTabs.y , 0, 0,
SWP_FRAMECHANGED | SWP_NOSIZE | SWP_NOZORDER);
if(m_itemcount==0)
{
pwnd->ShowWindow(SW_SHOW);//顯示第一個子窗體
}
else
{
pwnd->ShowWindow(SW_HIDE);
}
m_itemcount++;
}
void CMyTab::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
m_pCurWnd->GetWindowRect(&rect);
ScreenToClient(&rect);//注意
GetWindowRect(&m_tabrect);
ScreenToClient(&m_tabrect);//注意
if(rect.left<4-m_ispeed)
{
rect.TopLeft().x+=m_ispeed;
rect.BottomRight().x+=m_ispeed;
m_pCurWnd->MoveWindow(&rect,true);
}
else
{
rect.TopLeft().x=4;
rect.BottomRight().x=4+m_wndwidth;
m_pCurWnd->MoveWindow(&rect,true);//移到初始位置
KillTimer(1);
}
CTabCtrl::OnTimer(nIDEvent);
}
void CMyTab::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult) //單擊選項卡后觸發
{
int iNewTab = GetCurSel();
TCITEM item;
CWnd* pWnd;
item.mask = TCIF_PARAM;
//** show the selected tab --------
GetItem(iNewTab, &item);
pWnd = reinterpret_cast<CWnd*> (item.lParam);
ASSERT_VALID(pWnd);
if(m_bMove)
{
CRect rect;
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);//注意
m_wndwidth=rect.Width();
m_topleft=rect.TopLeft();
m_bottomright=rect.BottomRight();
m_topleft.x-=rect.Width();
m_bottomright.x-=rect.Width();
rect.SetRect(m_topleft,m_bottomright);
pWnd->MoveWindow(&rect,true);//將當前子窗體移到左邊
pWnd->ShowWindow(SW_SHOW);
m_pCurWnd=pWnd;
SetTimer(1,10,NULL);//開始運動
}
else
pWnd->ShowWindow(SW_SHOW);
*pResult = 0;
}
void CMyTab::OnSelchanging(NMHDR* pNMHDR, LRESULT* pResult) //單擊選項卡時觸發
{
// TODO: Add your control notification handler code here
int iNewTab = GetCurSel();
TCITEM item;
CWnd* pWnd;
item.mask = TCIF_PARAM;
//** hide the current tab ---------
GetItem(iNewTab, &item);
pWnd = reinterpret_cast<CWnd*> (item.lParam);
ASSERT_VALID(pWnd);
pWnd->ShowWindow(SW_HIDE);
*pResult = 0;
}
int CMyTab::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CTabCtrl::OnCreate(lpCreateStruct) == -1)
return -1;
GetWindowRect(&m_tabrect);
return 0;
}
HBRUSH CMyTab::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
pDC->SetTextColor(m_clrFor);
pDC->SetBkColor(m_clrBk);
return (HBRUSH)m_brush.GetSafeHandle();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -