www.pudn.com > MyViewTab.rar > MyViewTab.cpp
// MyViewTab.cpp : implementation file
//
#include "stdafx.h"
#include "MyViewTab.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyViewTab
CMyViewTab::CMyViewTab()
{
m_nCurrentTabPageItem = -1;
}
CMyViewTab::~CMyViewTab()
{
int nCount = m_PageArray.GetSize();
void * pNode = 0;
for(int i=0;inItem = nItem;
pPageInfo->pPage = pPage;
pPageInfo->nImage = nImage;
strcpy(pPageInfo->strText,pText);
m_PageArray.Add(pPageInfo);
if(::IsWindow(m_hWnd))
{
TCITEM tcItem;
tcItem.mask = TCIF_TEXT|TCIF_IMAGE;
tcItem.pszText = (char*)pText;
tcItem.iImage = nImage;
pPageInfo->nItemIndex = InsertItem(nItem, &tcItem);
if(pPageInfo->nItemIndex >= 0)
{
pPageInfo->bInsertItem = 1;
}
}
return true;
}
bool CMyViewTab::CreateAllPage()
{
TCITEM tcItem;
TAB_PAGE_INFO * pPageInfo = 0;
int nCount = m_PageArray.GetSize();
for(int i=0;ibInsertItem)
{
tcItem.mask = TCIF_TEXT|TCIF_IMAGE;
tcItem.pszText = (char*)pPageInfo->strText;
tcItem.iImage = pPageInfo->nImage;
pPageInfo->nItemIndex = InsertItem(pPageInfo->nItem, &tcItem);
if(pPageInfo->nItemIndex >= 0)
{
pPageInfo->bInsertItem = 1;
}
}
}
SwitchPage(0);
return true;
}
bool CMyViewTab::SwitchPage(int nItem)
{
RECT rect = {0,0,0,0};
TAB_PAGE_INFO * pPageInfo = 0;
int nCount = m_PageArray.GetSize();
for(int i=0;inItemIndex)
{
if(::IsWindow(m_hWnd))
SetCurSel ( nItem );
m_nCurrentTabPageItem = i;
#ifdef MOVEWINDOW_DIRECT
pPageInfo->pPage->MoveWindow(&pPageInfo->rcDisplay);
#endif
pPageInfo->pPage->ShowWindow(SW_SHOW);
//pPageInfo->pPage->Invalidate();
//pPageInfo->pPage->UpdateWindow();
}
else
{
pPageInfo->pPage->ShowWindow(SW_HIDE);
#ifdef MOVEWINDOW_DIRECT
pPageInfo->pPage->MoveWindow(&rect);
#endif
}
}
}
//TRACE("switch to page %d\n",nItem);
return true;
}
CWnd * CMyViewTab::GetPage(int nItem)
{
TAB_PAGE_INFO * pPageInfo = 0;
int nCount = m_PageArray.GetSize();
for(int i=0;inItem)
return pPageInfo->pPage;
}
}
return NULL;
}
void CMyViewTab::OnSize(UINT nType, int cx, int cy)
{
CTabCtrl::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
}
void CMyViewTab::SetParentRect(RECT * pRect)
{
ASSERT(pRect);
RECT rcPage = *pRect;
RECT rect;
RECT rcZero = {0,0,0,0};
TAB_PAGE_INFO * pPageInfo = 0;
int nCount = m_PageArray.GetSize();
for(int i=0;inItemIndex, &rect ) )
{
rcPage.bottom = pRect->bottom - (rect.bottom - rect.top) - TAB_HEIGHT_REVISE;
#ifdef MOVEWINDOW_DIRECT
if(i == GetCurSel())
pPageInfo->pPage->MoveWindow(&rcPage);
else
pPageInfo->pPage->MoveWindow(&rcZero);
#endif
pPageInfo->rcDisplay = rcPage;
}
}
}
}
void CMyViewTab::OnPageChange(int nItem)
{
::PostMessage(m_hMsgWnd,m_nMsg,0,nItem);
}
void CMyViewTab::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CTabCtrl::OnLButtonDown(nFlags, point);
int nItem = GetCurSel( );
if(nItem >= 0 && m_nCurrentTabPageItem != nItem)
{
SwitchPage(nItem);
OnPageChange(nItem);
}
}