www.pudn.com > SCIDE.rar > WorkSpaceView.cpp
// WorkSpaceView.cpp : implementation file
//
#include "stdafx.h"
#include "SCIDE.h"
#include "SCDoc.h"
#include "WorkSpaceView.h"
#include "Utils.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWorkSpaceView
IMPLEMENT_DYNCREATE(CWorkSpaceView, CTreeView)
CWorkSpaceView::CWorkSpaceView()
{
m_Font.CreateFont(10, 0, 0, 0, FW_REGULAR, 0, 0, 0, GB2312_CHARSET,
0, 0, 0, FIXED_PITCH | FF_MODERN, "Fixedsys");
m_pTreeCtrl = NULL;
}
CWorkSpaceView::~CWorkSpaceView()
{
}
BEGIN_MESSAGE_MAP(CWorkSpaceView, CTreeView)
//{{AFX_MSG_MAP(CWorkSpaceView)
ON_WM_CREATE()
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDOWN()
ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWorkSpaceView drawing
void CWorkSpaceView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: add draw code here
}
/////////////////////////////////////////////////////////////////////////////
// CWorkSpaceView diagnostics
#ifdef _DEBUG
void CWorkSpaceView::AssertValid() const
{
CTreeView::AssertValid();
}
void CWorkSpaceView::Dump(CDumpContext& dc) const
{
CTreeView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CWorkSpaceView message handlers
BOOL CWorkSpaceView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Add your specialized code here and/or call the base class
cs.style |= TVS_HASBUTTONS |
TVS_HASLINES |
TVS_HASBUTTONS |
TVS_SHOWSELALWAYS;
//cs.x = 200;
return CTreeView::PreCreateWindow(cs);
}
int CWorkSpaceView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CTreeView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_pTreeCtrl = &GetTreeCtrl();
m_ImageList.Create(IDB_BITMAP_TREE, 16, 1, RGB(0,255,0));
m_pTreeCtrl->SetImageList(&m_ImageList, TVSIL_NORMAL);
m_pTreeCtrl->SetFont(&m_Font,FALSE);
return 0;
}
void CWorkSpaceView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
UINT uInItem = 0;
if (NULL == m_pTreeCtrl->HitTest(point, &uInItem))
return;
if ((!(uInItem & TVHT_ONITEMLABEL)) && (!(uInItem & TVHT_ONITEMICON )))
return;
HTREEITEM hSel = m_pTreeCtrl->GetSelectedItem();
if(hSel == NULL)
return;
LPTREEITEMDATA pData = (LPTREEITEMDATA)m_pTreeCtrl->GetItemData(hSel);
if(pData == NULL)
{
m_pTreeCtrl->Expand(hSel, TVE_EXPAND);
return;
}
CSCDoc *pDoc = (CSCDoc *)pData->dwPt0;
switch(pData->nType)
{
case TID_ROOT : // 在根节点上双击时展开/收回它的子节点
m_pTreeCtrl->Expand(hSel, TVE_EXPAND);
break;
case TID_FILE : // 这里是一个文件节点
pDoc->OpenView();
break;
default:
CTreeView::OnLButtonDblClk(nFlags, point);
break;
}
//CTreeView::OnLButtonDblClk(nFlags, point);
}
void CWorkSpaceView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CTreeView::OnRButtonDown(nFlags, point);
}
/////////////////////////////////////////////////////////////////////////////
// CMyBar
CMyBar::CMyBar()
{
}
CMyBar::~CMyBar()
{
}
BEGIN_MESSAGE_MAP(CMyBar, baseCMyBar)
//{{AFX_MSG_MAP(CMyBar)
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyBar message handlers
int CMyBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (baseCMyBar::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rt;
GetClientRect(rt);
m_pMyTree = new CWorkSpaceView;
m_pMyTree->Create(NULL, "C脚本源文件列表", WS_CHILD|WS_VISIBLE | WS_BORDER,
rt, this, 0,NULL);
m_hRoot = m_pMyTree->GetTreeCtrl().InsertItem("脚本源文件(0)", 0, 0);
return 0;
}
void CMyBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)
{
baseCMyBar::OnUpdateCmdUI(pTarget, bDisableIfNoHndler);
UpdateDialogControls(pTarget, bDisableIfNoHndler);
}
void CMyBar::OnSize(UINT nType, int cx, int cy)
{
baseCMyBar::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect rc;
GetClientRect(rc);
m_pMyTree->MoveWindow(rc);
}
void CMyBar::OnClose()
{
CMyBar::OnClose();
// TODO: Add your message handler code here
delete m_pMyTree;
}