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; 
}