tabcontainer.cpp
来自「用bcg库编写的java IDE 源码」· C++ 代码 · 共 331 行
CPP
331 行
// TabContainer.cpp : implementation file
//
#include "stdafx.h"
#include "TabContainer.h"
#include "XPDrawLayer.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTabContainer
CTabContainer::CTabContainer()
{
}
CTabContainer::~CTabContainer()
{
int size = m_ptrComponents.GetSize();
for(int i=0; i<size;i++)
delete m_ptrComponents[i];
}
BEGIN_MESSAGE_MAP(CTabContainer, CWnd)
//{{AFX_MSG_MAP(CTabContainer)
ON_WM_PAINT()
ON_WM_SIZE()
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTabContainer message handlers
void CTabContainer::OnPaint()
{
CPaintDC dc(this); // device context for painting
CDC mdc;
CRect rcClient;
CRect rcClip;
dc.GetClipBox(&rcClip);
GetClientRect(&rcClient);
mdc.CreateCompatibleDC(&dc);
CBitmap bmp;
bmp.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());
CBitmap* pOldBmp = mdc.SelectObject(&bmp);
CBrush brBackgrnd(GuiDrawLayer::GetRGBColorXP());
mdc.FillRect(rcClient,&brBackgrnd);
brBackgrnd.DeleteObject();
dc.BitBlt (rcClip.left, rcClip.top, rcClip.Width(), rcClip.Height(),
&mdc, rcClip.left, rcClip.top, SRCCOPY);
mdc.SelectObject(pOldBmp);
ReleaseDC(&dc);
bmp.DeleteObject();
mdc.DeleteDC();
}
CWnd* CTabContainer::addComponent(CRuntimeClass *m_rtcwnd, UINT nID, DWORD dwStyle
,CPoint ptOrg,CPoint ptTerm)
{
CWnd* m_cwnd=NULL;
BOOL btype=FALSE; //only object small
/**
if (m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CComboBox)))
{
m_cwnd = new CGuiComboBoxExt();
if (!((CGuiComboBoxExt*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(1,1,100,100), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
**/
if (m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CTreeCtrl)))
{
m_cwnd = new CTreeCtrl();
if (!((CTreeCtrl*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CListCtrl)))
{
m_cwnd = new CListCtrl();
if (!((CListCtrl*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CListBox)))
{
m_cwnd = new CListBox();
if (!((CListBox*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CEdit)))
{
m_cwnd = new CEdit();
if (!((CEdit*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CButton)))
{
m_cwnd = new CButton();
if (!((CButton*)m_cwnd)->Create(_T(""),dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
/**
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CGuiImageLinkButton)))
{
m_cwnd = new CGuiImageLinkButton();
if (!((CGuiImageLinkButton*)m_cwnd)->Create(_T(""),dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CGuiLabelButton)))
{
m_cwnd = new CGuiLabelButton();
if (!((CGuiLabelButton*)m_cwnd)->Create(_T(""),dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CGuiVisioFolder)))
{
m_cwnd = new CGuiVisioFolder();
if (!((CGuiVisioFolder*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CGuiToolButton)))
{
m_cwnd = new CGuiToolButton();
if (!((CGuiToolButton*)m_cwnd)->Create(_T(""),
dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
btype=TRUE;
return NULL;
goto crear;
}
**/
else
{
m_cwnd=(CWnd*) m_rtcwnd->CreateObject();
if (!m_cwnd->Create(0,0,dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
crear:
m_ptrComponents.Add(new __Component(ptOrg,ptTerm,m_cwnd));
//**RecalLayout();
return m_cwnd;
}
CWnd* CTabContainer::addComponent(CRuntimeClass* m_rtcwnd,UINT nID,DWORD dwStyle,
CRect rcRect)
{
CWnd* m_cwnd=NULL;
BOOL btype=FALSE; //only object small
/**
if (m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CComboBox)))
{
m_cwnd = new CGuiComboBoxExt();
if (!((CGuiComboBoxExt*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(1,1,100,100), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
**/
if (m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CTreeCtrl)))
{
m_cwnd = new CTreeCtrl();
if (!((CTreeCtrl*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CListCtrl)))
{
m_cwnd = new CListCtrl();
if (!((CListCtrl*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CListBox)))
{
m_cwnd = new CListBox();
if (!((CListBox*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CEdit)))
{
m_cwnd = new CEdit();
if (!((CEdit*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CButton)))
{
m_cwnd = new CButton();
if (!((CButton*)m_cwnd)->Create(_T(""),dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
/**
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CGuiImageLinkButton)))
{
m_cwnd = new CGuiImageLinkButton();
if (!((CGuiImageLinkButton*)m_cwnd)->Create(_T(""),dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CGuiLabelButton)))
{
m_cwnd = new CGuiLabelButton();
if (!((CGuiLabelButton*)m_cwnd)->Create(_T(""),dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
btype=TRUE;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CGuiVisioFolder)))
{
m_cwnd = new CGuiVisioFolder();
if (!((CGuiVisioFolder*)m_cwnd)->Create(dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
else if ( m_rtcwnd->IsDerivedFrom(RUNTIME_CLASS(CGuiToolButton)))
{
m_cwnd = new CGuiToolButton();
if (!((CGuiToolButton*)m_cwnd)->Create(_T(""),
dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
btype=TRUE;
return NULL;
goto crear;
}
**/
else
{
m_cwnd=(CWnd*) m_rtcwnd->CreateObject();
if (!m_cwnd->Create(0,0,dwStyle|WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, nID))
return NULL;
goto crear;
}
crear:
m_ptrComponents.Add(new __Component(rcRect,m_cwnd));
//**RecalLayout();
return m_cwnd;
}
void CTabContainer::addButton(int iImage,_CGuiToolButton* pwndComp,
CString m_szCaption,CString m_ToolTip)
{
if (!m_szCaption.IsEmpty())
{
//m_guib->SetFont(&m_cfont);
//m_guib->SetCaption(m_szCaption);
}
CRect rcWin;
pwndComp->GetWindowRect(&rcWin);
CTabContainer::__Component* pComp = new CTabContainer::__Component(rcWin,pwndComp);
m_ptrComponents.Add(pComp);
pwndComp->SethIcon(m_imgList.ExtractIcon(iImage));
}
void CTabContainer::SetImageList(UINT nBitmapID, int cx, int nGrow, COLORREF crMask)
{
CBitmap cbmp;
BITMAP bmp;
m_imgList.Create(nBitmapID,cx,nGrow,crMask);
cbmp.LoadBitmap(nBitmapID);
cbmp.GetBitmap(&bmp);
m_imgList.Add(&cbmp,crMask);
}
void CTabContainer::addComponent(CWnd* pwndComp,CRect rcRect)
{
m_ptrComponents.Add(new __Component(rcRect,pwndComp));
}
void CTabContainer::addComponent(CWnd* pwndComp,CPoint ptOrg,CPoint ptTerm)
{
m_ptrComponents.Add(new __Component(ptOrg,ptTerm,pwndComp));
}
void CTabContainer::OnSize(UINT nType, int cx, int cy)
{
CWnd::OnSize(nType, cx, cy);
int size = m_ptrComponents.GetSize();
for(int i=0; i<size; i++)
if(m_ptrComponents[i]->resize())
m_ptrComponents[i]->updateCoords(cx,cy);
}
BOOL CTabContainer::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style |= WS_CLIPCHILDREN;
return CWnd::PreCreateWindow(cs);
}
BOOL CTabContainer::OnEraseBkgnd(CDC* pDC)
{pDC;
return TRUE;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?