亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lefttreeview.cpp

?? 用MFC和Access開發的數據庫系統
?? CPP
字號:
// LeftTreeView.cpp : implementation file
//

#include "stdafx.h"
#include "圖書館系統.h"
#include "LeftTreeView.h"
#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLeftTreeView

IMPLEMENT_DYNCREATE(CLeftTreeView, CFormView)

CLeftTreeView::CLeftTreeView()
	: CFormView(CLeftTreeView::IDD)
{
	//{{AFX_DATA_INIT(CLeftTreeView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

CLeftTreeView::~CLeftTreeView()
{
}

void CLeftTreeView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLeftTreeView)
	DDX_Control(pDX, IDC_TREE, m_treeCtrl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLeftTreeView, CFormView)
	//{{AFX_MSG_MAP(CLeftTreeView)
	ON_WM_CONTEXTMENU()
	ON_WM_SIZE()
	ON_NOTIFY(NM_KILLFOCUS, IDC_TREE, OnKillfocusTree)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE, OnSelchangedTree)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLeftTreeView diagnostics

#ifdef _DEBUG
void CLeftTreeView::AssertValid() const
{
	CFormView::AssertValid();
}

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

/////////////////////////////////////////////////////////////////////////////
// CLeftTreeView message handlers
BOOL CLeftTreeView::OpenRecordSet(_RecordsetPtr &recPtr, CString &strSQL)
{
	CMyApp* pApp=(CMyApp*)AfxGetApp();
	//創建記錄集對象
	m_pRecordset.CreateInstance(__uuidof(Recordset));
	//在ADO操作中建議語句中要常用try...catch()來捕獲錯誤信息,
    //因為它有時會經常出現一些想不到的錯誤
	try
	{
		//從數據庫中打開表
		recPtr->Open(strSQL.AllocSysString(), 
			pApp->m_pConnection.GetInterfacePtr(),
			adOpenDynamic,
			adLockOptimistic,
			adCmdText);
	}
	catch (_com_error e)
	{
		CString strError;
		strError.Format("警告:打開數據表時發生異常。 錯誤信息: %s",\
			e.ErrorMessage());
		AfxMessageBox(strError);
		return FALSE;
	}
	return TRUE;
}

void CLeftTreeView::ShowTree()
{
	//首先刪除所有的樹項
	m_treeCtrl.DeleteAllItems();
	CString strSQL;
	strSQL="select * from 圖書信息情況";
	if(!OpenRecordSet(m_pRecordset,strSQL))
	{
		return;
	}
	//定義變量
	_variant_t varValue;	
	//從數據庫中開始填充樹
	HTREEITEM hRootItem,hFirstClassItem,hSecondClassItem;
	hRootItem=m_treeCtrl.InsertItem("所有聯系人", 0, 1);
	int i=0;	
	m_pRecordset->MoveFirst();
	while(!m_pRecordset->adoEOF)
	{
		CString strClass;
		varValue=m_pRecordset->GetCollect("一級類型");
		strClass=VariantToCString(varValue);
		//添加二級類別
		hFirstClassItem=AddFirstClassToTree(hRootItem,strClass);
		varValue=m_pRecordset->GetCollect("二級類型");
		strClass=VariantToCString(varValue);
		hSecondClassItem=AddSecondClassToTree(hFirstClassItem,strClass);
		//展開根目錄
		m_pRecordset->MoveNext();
	}
	//關閉
	m_pRecordset->Close();
	m_pRecordset=NULL;
	m_treeCtrl.Expand(hRootItem,TVE_EXPAND);
}

HTREEITEM CLeftTreeView::AddFirstClassToTree(HTREEITEM hRootItem, 
											 CString strFirstClass)
{
	//從數據庫中開始填充樹
	if(hRootItem==NULL)
		return NULL;
	
	if(m_treeCtrl.ItemHasChildren(hRootItem))
	{
		HTREEITEM hFirstClassItem=m_treeCtrl.GetChildItem(hRootItem);
		while(hFirstClassItem)
		{
			CString strItemText =m_treeCtrl.GetItemText(hFirstClassItem);
			if(strItemText==strFirstClass)
				return hFirstClassItem;
			hFirstClassItem=m_treeCtrl.GetNextSiblingItem(hFirstClassItem);
		}
	}
	//插入數據項數據結構
	TV_INSERTSTRUCT TCItem;
	TCItem.hParent =hRootItem;
	TCItem.hInsertAfter = TVI_LAST;
	//設屏蔽
	TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
	//序號
	TCItem.item.lParam=0;
	//正常圖標
	TCItem.item.iImage=m_iImage;
	//選中時圖標
	TCItem.item.iSelectedImage=m_iImage>4?m_iImage-4:m_iImage+1;	
	TCItem.item.pszText = (LPTSTR)(LPCTSTR)strFirstClass;
	HTREEITEM hFirstClassItemNew =m_treeCtrl.InsertItem(&TCItem);
	m_treeCtrl.SortChildren(hRootItem);
	return hFirstClassItemNew;
}

HTREEITEM CLeftTreeView::AddSecondClassToTree(HTREEITEM hFirstClassItem,
											  CString strSecondClass)
{
	//從數據庫中開始填充樹
	if(hFirstClassItem==NULL)
		return NULL;	
	if(m_treeCtrl.ItemHasChildren(hFirstClassItem))
	{
		HTREEITEM hSecondClassItem=m_treeCtrl.GetChildItem(hFirstClassItem);
		while(hSecondClassItem)
		{
			CString strItemText =m_treeCtrl.GetItemText(hSecondClassItem);
			if(strItemText==strSecondClass)
				return hSecondClassItem;
			hSecondClassItem=m_treeCtrl.GetNextSiblingItem(hSecondClassItem);
		}
	}
	//插入數據項數據結構
	TV_INSERTSTRUCT TCItem;
	TCItem.hParent =hFirstClassItem;
	TCItem.hInsertAfter = TVI_LAST;
	//設屏蔽
	TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
	//序號
	TCItem.item.lParam=0;
	//正常圖標
	TCItem.item.iImage=m_iImage>4?m_iImage-3:m_iImage+2;
	//選中時圖標
	TCItem.item.iSelectedImage=m_iImage>4?m_iImage-2:m_iImage+3;
	TCItem.item.pszText = (LPTSTR)(LPCTSTR)strSecondClass;

	HTREEITEM hSecondClassItemNew =m_treeCtrl.InsertItem(&TCItem);
	m_treeCtrl.SortChildren(hFirstClassItem);
	return hSecondClassItemNew;
}

CString CLeftTreeView::VariantToCString(const _variant_t &var)
{
	CString strValue;	
	switch (var.vt)
	{
	case VT_BSTR://字符串
	case VT_LPSTR:
	case VT_LPWSTR:
		strValue = (LPCTSTR)(_bstr_t)var;
		break;
	case VT_I1://無符號字符
	case VT_UI1:
		strValue.Format("%d", var.bVal);
		break;
	case VT_I2://短整型
		strValue.Format("%d", var.iVal);
		break;
	case VT_UI2://無符號短整型
		strValue.Format("%d", var.uiVal);
		break;
	case VT_INT://整型
		strValue.Format("%d", var.intVal);
		break;
	case VT_I4: //整型
	case VT_I8: //長整型
		 strValue.Format("%d", var.lVal);
		break;
	case VT_UINT://無符號整型
		strValue.Format("%d", var.uintVal);
		break;
	case VT_UI4: //無符號整型
	case VT_UI8: //無符號長整型
		 strValue.Format("%d", var.ulVal);
		 break;
	case VT_VOID:
		strValue.Format("%8x", var.byref);
		break;
	case VT_R4://浮點型
		strValue.Format("%.4f", var.fltVal);
		break;
	case VT_R8://雙精度型
		strValue.Format("%.8f", var.dblVal);
		break;
	case VT_DECIMAL: //小數
		strValue.Format("%.8f", (double)var);
		break;
	case VT_CY:
		{
			COleCurrency cy = var.cyVal;
			strValue = cy.Format();
		}
		break;
	case VT_BLOB:
	case VT_BLOB_OBJECT:
	case 0x2011:
		strValue = "[BLOB]";
		break;
	case VT_BOOL://布爾型		
		strValue = var.boolVal ? "TRUE" : "FALSE";
		break;
	case VT_DATE: //日期型
		{
			DATE dt = var.date;
			COleDateTime da = COleDateTime(dt); 
			strValue = da.Format("%Y-%m-%d %H:%M:%S");
		}
		break;
	case VT_NULL://NULL值
	case VT_EMPTY://空
		 strValue = "";
		 break;
	case VT_UNKNOWN://未知類型
	default:
		strValue = "UN_KNOW";
		break;
	}
	return strValue;
}

void CLeftTreeView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();	
	// TODO: Add your specialized code here and/or call the base class
	m_ImageList.Create(IDB_TREE, 32, 1, RGB(255, 0, 255));	
	m_treeCtrl.SetImageList(&m_ImageList, LVSIL_NORMAL);
	m_hSelItem=NULL;
	//隨機圖標
	srand((unsigned)time(NULL));
	//首先調用一次rand(),這樣才確保m_iImage起始值不同
	rand();
	m_iImage=(int)((float)rand()*8.0/(float)RAND_MAX);
	//初始化樹
	ShowTree();
}

void CLeftTreeView::OnContextMenu(CWnd* pWnd, CPoint point) 
{
	// TODO: Add your message handler code here
	if (point != CPoint (-1, -1))
	{
		//選中點擊的樹項:
		CPoint ptTree = point;
		m_treeCtrl.ScreenToClient (&ptTree);		
		HTREEITEM hTreeItem =m_treeCtrl.HitTest(ptTree);
		if (hTreeItem != NULL)
		{
			//首先選中
			m_treeCtrl.SelectItem (hTreeItem);
		}
	}
	//賦予輸入焦點
	m_treeCtrl.SetFocus ();
	//上下文菜單,命令由主框架處理
	CMainFrame* pMainFrm=(CMainFrame*)AfxGetMainWnd();
	CMenu menu;
    menu.LoadMenu(IDR_MAINFRAME);
    menu.GetSubMenu(1)
        ->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
        point.x, point.y,pMainFrm);
	
}

void CLeftTreeView::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);
	CFormView::ShowScrollBar(SB_BOTH,FALSE);
	// TODO: Add your message handler code here
	//使樹控件填滿整個視圖
	if (GetSafeHwnd())
	{
		CRect rect;
		GetClientRect(&rect);
		if (m_treeCtrl.GetSafeHwnd())
			m_treeCtrl.MoveWindow(&rect);
	}
}

void CLeftTreeView::OnKillfocusTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CMainFrame* pMainFrm=(CMainFrame*)AfxGetMainWnd();
	//全部落選,以便在刪除時可以判斷刪除情況啊	
	m_treeCtrl.SelectItem(NULL);  //TVM_GETNEXTITEM
	pMainFrm->bTreeSel=FALSE;
	*pResult = 0;
}

void CLeftTreeView::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	CString strRoot, strFirstClass,strSecondClass;
	HTREEITEM hRootItem,hFirstClassItem,hSecondClassItem;
	HTREEITEM hSelItem,hParent;
	BOOL bHasChild;
	hSelItem=pNMTreeView->itemNew.hItem;
	m_hSelItem=hSelItem;
	//有無子
	bHasChild=m_treeCtrl.ItemHasChildren(hSelItem);
	//其父
	hParent=m_treeCtrl.GetParentItem(hSelItem);
	//二級類別
	if(!bHasChild)
	{
		hSecondClassItem=hSelItem;
		strSecondClass=m_treeCtrl.GetItemText(hSecondClassItem);
		hFirstClassItem=m_treeCtrl.GetParentItem(hSecondClassItem);
		strFirstClass=m_treeCtrl.GetItemText(hFirstClassItem);
		hRootItem=m_treeCtrl.GetParentItem(hFirstClassItem);
		strRoot=m_treeCtrl.GetItemText(hRootItem);
		//處理
		m_pRightPaneFrame->m_strFirstClass=strFirstClass;
		m_pRightPaneFrame->m_strSecondClass=strSecondClass;
		m_pRightPaneFrame->SendMessage(LIST_EVERYONE,2,0);
		
	}//所有聯系人
	else if(hParent==NULL)
	{
		hRootItem=hSelItem;
		strRoot=m_treeCtrl.GetItemText(hRootItem);
		m_pRightPaneFrame->SendMessage(LIST_EVERYONE,0,0);
	}
	//一級類別
	else
	{
		hFirstClassItem=hSelItem;
		hRootItem=m_treeCtrl.GetParentItem(hFirstClassItem);
		strFirstClass=m_treeCtrl.GetItemText(hFirstClassItem);		
		strRoot=m_treeCtrl.GetItemText(hRootItem);
    	m_pRightPaneFrame->m_strFirstClass=strFirstClass;
		m_pRightPaneFrame->SendMessage(LIST_EVERYONE,1,0);
	}

	*pResult = 0;
}










?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷拍一区二区三区四区| 久久99热国产| 久久成人18免费观看| 在线免费观看不卡av| ww亚洲ww在线观看国产| 亚洲国产精品一区二区www| 国产酒店精品激情| 日韩亚洲欧美在线| 亚洲精品v日韩精品| 国产精品中文字幕一区二区三区| 欧美视频在线观看一区| 亚洲色图欧洲色图婷婷| 国产成人av影院| 欧美成人a在线| 亚洲超碰97人人做人人爱| av在线不卡网| 中文字幕免费不卡在线| 国内一区二区在线| 欧美一级在线观看| 香蕉成人啪国产精品视频综合网| 99久久99久久精品国产片果冻| 久久久五月婷婷| 激情av综合网| 欧美大片一区二区| 日本视频中文字幕一区二区三区| 欧美日韩在线观看一区二区 | 精品国产一区二区三区久久久蜜月| 亚洲人成小说网站色在线| 成人av资源在线| 国产精品国产三级国产aⅴ原创 | 午夜精品久久久久久不卡8050| 色婷婷综合在线| 亚洲精品第一国产综合野| 99久久久精品| 亚洲一级二级三级在线免费观看| 在线观看区一区二| 性感美女极品91精品| 欧美日韩mp4| 免播放器亚洲一区| 久久久久久久久伊人| 国产成人精品在线看| 国产精品久久久久久一区二区三区 | 国产精品99久久久久久宅男| 久久久亚洲午夜电影| 国产剧情在线观看一区二区| 国产精品久久久久久亚洲毛片| 91麻豆福利精品推荐| 亚洲午夜久久久久久久久电影网 | 欧美精品一区二区久久婷婷| 精品中文av资源站在线观看| 欧美国产欧美综合| 色婷婷综合在线| 人人精品人人爱| 久久精品日产第一区二区三区高清版| 成人av电影在线| 亚洲综合成人在线| 欧美一级在线视频| 成人激情免费网站| 亚洲mv在线观看| 精品国产乱码久久久久久图片| 波多野结衣在线aⅴ中文字幕不卡| 日韩毛片一二三区| 7777女厕盗摄久久久| 国产精品99久久久久久有的能看 | 国产女主播在线一区二区| www.欧美日韩国产在线| 丝袜a∨在线一区二区三区不卡| 日韩视频一区二区三区在线播放| 国产成人综合亚洲91猫咪| 伊人夜夜躁av伊人久久| 欧美不卡视频一区| 91免费观看视频在线| 免费观看成人av| 亚洲激情图片小说视频| 精品国产乱码久久久久久浪潮| 一本大道久久精品懂色aⅴ| 免费成人在线视频观看| 亚洲三级在线播放| 26uuu精品一区二区在线观看| 欧美午夜精品一区| 国产美女一区二区三区| 日韩高清国产一区在线| 亚洲视频免费在线观看| 国产日韩欧美电影| 日韩精品一区二区三区中文不卡| 色婷婷av一区二区三区之一色屋| 狠狠色丁香九九婷婷综合五月 | 国产精品青草综合久久久久99| 91精品黄色片免费大全| 91老师片黄在线观看| 国产精品中文欧美| 久久99久久久久久久久久久| 亚洲高清免费观看| 亚洲日韩欧美一区二区在线| 国产婷婷精品av在线| 日韩午夜在线观看视频| 91久久精品一区二区| av中文一区二区三区| 国产成人综合亚洲网站| 国内不卡的二区三区中文字幕| 日韩经典中文字幕一区| 亚洲一区二区视频| 亚洲精品视频在线观看网站| 国产精品国产三级国产a| 国产欧美精品国产国产专区| 久久精品视频一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 欧美一区二区日韩| 日韩一区二区免费高清| 欧美一区二区三区爱爱| 日韩午夜在线观看视频| 日韩欧美国产不卡| 精品黑人一区二区三区久久| 日韩精品一区二区三区视频在线观看| 欧美精品免费视频| 337p亚洲精品色噜噜噜| 日韩一区二区免费视频| 精品国产免费人成电影在线观看四季 | 亚洲精品在线免费播放| 日韩女优毛片在线| 久久夜色精品一区| 国产欧美一二三区| 国产精品入口麻豆原神| 亚洲色图欧洲色图| 亚洲午夜精品网| 日韩**一区毛片| 韩国v欧美v日本v亚洲v| 国产盗摄一区二区| 96av麻豆蜜桃一区二区| 欧美日韩激情在线| 日韩午夜在线观看视频| 国产日韩欧美制服另类| 中文字幕一区二区三区不卡在线 | 精品视频999| 91激情五月电影| 欧美在线小视频| 777精品伊人久久久久大香线蕉| 91精品国产黑色紧身裤美女| 欧美不卡一二三| 中文字幕亚洲成人| 午夜私人影院久久久久| 精品伊人久久久久7777人| 成人精品国产一区二区4080| 在线中文字幕一区| 欧美videos大乳护士334| 国产精品久久午夜| 亚洲成a人v欧美综合天堂下载| 日本不卡高清视频| 成人综合在线视频| 欧美日韩精品系列| 国产亚洲污的网站| 亚洲影视在线观看| 精品一区二区免费| 在线亚洲+欧美+日本专区| 欧美一区二区三区四区久久| 国产精品嫩草影院av蜜臀| 亚洲一区欧美一区| 黑人巨大精品欧美一区| 在线日韩一区二区| 欧美国产综合色视频| 日韩av在线播放中文字幕| 99麻豆久久久国产精品免费| 欧美成人精品二区三区99精品| 亚洲女人****多毛耸耸8| 国内精品国产成人国产三级粉色| 91蜜桃网址入口| 久久免费看少妇高潮| 天天操天天综合网| 91免费版在线| 国产三级精品三级在线专区| 日韩极品在线观看| 在线亚洲一区二区| 国产精品丝袜久久久久久app| 另类小说欧美激情| 欧美视频中文一区二区三区在线观看| 国产精品热久久久久夜色精品三区| 免费成人你懂的| 久久色视频免费观看| 亚洲黄色在线视频| 成人一区二区三区中文字幕| 欧美精品一区二区三区蜜臀| 日本不卡中文字幕| 欧美日韩精品欧美日韩精品| 伊人开心综合网| 99久久国产综合精品女不卡| 欧美国产一区二区在线观看 | 99麻豆久久久国产精品免费| 久久女同精品一区二区| 久久国产尿小便嘘嘘尿| 日韩一区二区三区免费观看| 日日夜夜一区二区| 欧美日韩五月天| 亚洲国产精品一区二区www| 在线精品视频一区二区三四| 亚洲欧美韩国综合色| 91麻豆123| 亚洲福利视频导航| 欧美影视一区在线| 亚洲福利电影网| 91精品视频网|