📄 classtreeview.cpp
字号:
// ClassTreeView.cpp : implementation file
//
#include "stdafx.h"
#include "dag.h"
#include "ClassTreeView.h"
#include "mainfrm.h"
#include "dagview.h"
#include "dagDetialView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//-------------------------
extern CDagApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CClassTreeView
IMPLEMENT_DYNCREATE(CClassTreeView, CTreeView)
CClassTreeView::CClassTreeView()
{
HICON hIconFolder=AfxGetApp()->LoadIcon(IDI_ICON1);
HICON hIconOpenFolder=AfxGetApp()->LoadIcon(IDI_ICON2);
m_imageList.Create(16,16,ILC_MASK|ILC_COLOR16,0,2);
m_imageList.Add(hIconFolder);
m_imageList.Add(hIconOpenFolder);
}
CClassTreeView::~CClassTreeView()
{
}
BEGIN_MESSAGE_MAP(CClassTreeView, CTreeView)
//{{AFX_MSG_MAP(CClassTreeView)
ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CClassTreeView drawing
void CClassTreeView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: add draw code here
}
/////////////////////////////////////////////////////////////////////////////
// CClassTreeView diagnostics
#ifdef _DEBUG
void CClassTreeView::AssertValid() const
{
CTreeView::AssertValid();
}
void CClassTreeView::Dump(CDumpContext& dc) const
{
CTreeView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CClassTreeView message handlers
void CClassTreeView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
long lStyleOld;
// Initialize the CTreeView control
CTreeCtrl& refTree=GetTreeCtrl();
refTree.SetImageList(&m_imageList,TVSIL_NORMAL);
lStyleOld = GetWindowLong(refTree.m_hWnd, GWL_STYLE);
lStyleOld |= TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT;
SetWindowLong(refTree.GetSafeHwnd(), GWL_STYLE, lStyleOld);
// CFont font;
// font.CreatePointFont(120,"Impact");
// refTree.SetFont(&font,true);
//使用ADO创建数据库记录集
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误
TV_INSERTSTRUCT insertStruct;
insertStruct.hParent=NULL;
insertStruct.hInsertAfter=TVI_FIRST;
insertStruct.item.iSelectedImage=0;
insertStruct.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
insertStruct.item.hItem=NULL;
insertStruct.item.stateMask=0;
insertStruct.item.iImage=1;
insertStruct.item.cChildren=0;
insertStruct.item.lParam=0;
insertStruct.item.pszText="所有分类";//根
HTREEITEM hRoot=refTree.InsertItem(&insertStruct);
//---添加所有分类---------------------
InitTree(refTree,hRoot,"01");
InitTree(refTree,hRoot,"02");
HTREEITEM hSecond=InitTree(refTree,hRoot,"03");
//---由于数据库设计的因素这样分类比较妥当
refTree.Expand(hSecond,TVE_EXPAND);
refTree.SelectItem(hSecond);
}
HTREEITEM CClassTreeView::InitTree(CTreeCtrl& refTree,HTREEITEM hTreeNode,CString strParent)
{
_RecordsetPtr pRS;
pRS.CreateInstance(__uuidof(Recordset));
try
{
pRS->Open("SELECT * FROM sambios001", // 查询qysys001表中所有字段
theApp.m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
pRS->MoveFirst();
_variant_t var;
CString strTableName,strTableCode;
HTREEITEM hChildItem;
while(!pRS->adoEOF)
{
var=pRS->GetCollect("menuname");
if(var.vt != VT_NULL)
strTableName = (LPCSTR)_bstr_t(var);
var=pRS->GetCollect("menucode");
if(var.vt != VT_NULL)
strTableCode = (LPCSTR)_bstr_t(var);
if(!strTableCode.Find(strParent,0)&&strTableCode.GetLength()==strParent.GetLength()+2)
{
hChildItem=refTree.InsertItem(strTableName,hTreeNode,TVI_LAST);
InitTree(refTree,hChildItem,strTableCode);
}
pRS->MoveNext();
}
return hChildItem;
}
void CClassTreeView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CTreeCtrl& refTreeCtrl=GetTreeCtrl();
HTREEITEM hSelected=pNMTreeView->itemNew.hItem;
if(hSelected!=NULL)
{
m_strMenuName=refTreeCtrl.GetItemText(hSelected);
if(AfxGetMainWnd()->IsWindowEnabled())
UpdateDagView();
}
//-----------
*pResult = 0;
}
void CClassTreeView::UpdateDagView()
{
CMainFrame* pFrame=static_cast<CMainFrame*>(AfxGetMainWnd());
CDagView* pDagView=static_cast<CDagView*>(pFrame->m_wndSplitter2.GetPane(0,0));
CDagDetialView* pDagDetialView=static_cast<CDagDetialView*>(pFrame->m_wndSplitter2.GetPane(1,0));
pDagView->m_strTableName=GetTableName();
pDagView->OnInitialUpdate();
// pDagDetialView->OnInitialUpdate();
}
CString CClassTreeView::GetTableName()
{
if(m_strMenuName=="党群工作类")
return "sambios0101";
else if(m_strMenuName=="科学研究类")
return "sambios0101";
return "sambios0101";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -