⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbtreeview.cpp

📁 ADO查看数据库工具的原码
💻 CPP
字号:
// DBTreeView.cpp : implementation file
//

#include "stdafx.h"
#include "..\DHDBView.h"
#include "DBTreeView.h"
#include "..\DHDBViewDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "DHDBTables.h"
/////////////////////////////////////////////////////////////////////////////
// CDBTreeView

IMPLEMENT_DYNCREATE(CDBTreeView, CTreeView)

CDBTreeView::CDBTreeView()
{
}

CDBTreeView::~CDBTreeView()
{
}


BEGIN_MESSAGE_MAP(CDBTreeView, CTreeView)
	//{{AFX_MSG_MAP(CDBTreeView)
	ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
	ON_COMMAND(IDM_TABLE_OPEN_ALL, OnOpenTableAll)
	ON_COMMAND(IDM_TABLE_OPEN_FIRST, OnOpenTableFirst)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDBTreeView drawing

void CDBTreeView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CDBTreeView diagnostics

#ifdef _DEBUG
void CDBTreeView::AssertValid() const
{
	CTreeView::AssertValid();
}

void CDBTreeView::Dump(CDumpContext& dc) const
{
	CTreeView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CDBTreeView message handlers

void CDBTreeView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	if (lHint == 0x5A) 
	{
		GetTreeCtrl().DeleteAllItems();
		ReflashTree();
		GetDocument()->UpdateAllViews (this, 0x6A, NULL);
		return;
	}
	CTreeView::OnUpdate (pSender, lHint, pHint);
}

BOOL CDBTreeView::ReflashTree()
{
	CString strCon;
	strCon.Format("%s", ((CDHDBViewDoc*)GetDocument())->m_strCon);
	CDHDBTables DHTables;	
	CStringArray* pStrAry = DHTables.GetDBTables(strCon);
	CTreeCtrl& treeCtrl = GetTreeCtrl();
	int count = pStrAry->GetSize();
	for(int i=0; i<count; i++)
	{
		HTREEITEM hTableItem = treeCtrl.InsertItem(pStrAry->GetAt(i));
		ReflashTableColumns(hTableItem);
	}
	delete pStrAry;
	return TRUE;
}

BOOL CDBTreeView::ReflashTableColumns(HTREEITEM hTableItem)
{
	CTreeCtrl& treeCtrl = GetTreeCtrl();	
	CString strTableName = treeCtrl.GetItemText(hTableItem);
	CDHDBTables DHTables;
	CStringArray* pStrAry = DHTables.GetTableColumns(((CDHDBViewDoc*)GetDocument())->m_strCon, strTableName);
	int count = pStrAry->GetSize();
	for(int i=0; i<count; i++)
	{
		treeCtrl.InsertItem(pStrAry->GetAt(i), hTableItem);
	}
	delete pStrAry;
	return true;
}


BOOL CDBTreeView::PreCreateWindow(CREATESTRUCT& cs) 
{
	cs.style = cs.style|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT;
	return CTreeView::PreCreateWindow(cs);
}

void CDBTreeView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HTREEITEM hItem = GetTreeCtrl().GetSelectedItem();
	if(hItem == NULL)
	{
		*pResult = 0;
		return;
	}
	if(GetTreeCtrl().GetParentItem(hItem) != NULL)
	{
		*pResult = 0;
		return;
	}
	CMenu menu;
	CPoint point;
    GetCursorPos( &point );
 	if (point.x == -1 && point.y == -1)
	{
		CRect rect;
 		GetClientRect(rect);
 		ClientToScreen(rect);
 
 		point = rect.TopLeft();
 		point.Offset(5, 5);
 	}
	menu.LoadMenu(IDR_TREEMENU);
	CMenu *pContextMenu=menu.GetSubMenu(0);
	
	
	
	/*if(GetParentItem(hItem) != NULL)
	{
		pContextMenu->RemoveMenu(1, MF_BYPOSITION);
	}*/
	
	pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,point.x,point.y,this,NULL);
	*pResult = 0;
}

void CDBTreeView::OnOpenTableAll()
{
	HTREEITEM hItem = GetTreeCtrl().GetSelectedItem();
	if(hItem == NULL)
	{
		return;
	}
	if(GetTreeCtrl().GetParentItem(hItem) != NULL)
	{
		return;
	}
	((CDHDBViewDoc*)GetDocument())->m_strTableName = GetTreeCtrl().GetItemText(hItem);
	GetDocument()->UpdateAllViews (this, 0x7A, NULL);
}

void CDBTreeView::OnOpenTableFirst()
{
	HTREEITEM hItem = GetTreeCtrl().GetSelectedItem();
	if(hItem == NULL)
	{
		return;
	}
	if(GetTreeCtrl().GetParentItem(hItem) != NULL)
	{
		return;
	}
	((CDHDBViewDoc*)GetDocument())->m_strTableName = GetTreeCtrl().GetItemText(hItem);
	GetDocument()->UpdateAllViews (this, 0x7B, NULL);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -