標(biāo)題: MFC的樹(shù)形控件怎么添加具有層次性的目錄 [打印本頁(yè)]
作者: bibi 時(shí)間: 2015-4-18 20:58
標(biāo)題: MFC的樹(shù)形控件怎么添加具有層次性的目錄
我用一個(gè)access數(shù)據(jù)庫(kù)來(lái)管理圖片資源,需要對(duì)這些圖片進(jìn)行歸門別類,開(kāi)始在網(wǎng)上Google了很久都沒(méi)找到什么什么資料出來(lái),不過(guò)自己整理出思路來(lái)了。。貼在這可以給需要的人看看。
一、設(shè)計(jì)數(shù)據(jù)庫(kù)
這里設(shè)計(jì)了兩張表tbCategores、tbPictures,如下圖所示
圖1 表tbCategores,IDCat是主鍵,自動(dòng)編號(hào),ParentID是目錄Categores的父目錄ID,為0表示沒(méi)有父目錄
圖2 表tbPictures存儲(chǔ)相應(yīng)下的圖片,有IDCat(外鍵)表明當(dāng)前圖片(IDpict)屬于哪個(gè)目錄
圖3 兩張表的關(guān)系
二、代碼
這里給出怎么將表tbCategores填充到Treectrl的代碼,其他代碼可以自行發(fā)揮!!
void CGalleryDlg::InitTree()
{
CMedicalApp *pApp = (CMedicalApp *)AfxGetApp();
m_treeImages.Create(16,16,ILC_MASK |ILC_COLOR32,3,3);
m_treeImages.Add(pApp->LoadIcon(IDI_DB ));
m_treeImages.Add(pApp->LoadIcon(IDI_FOLDER_YELLOW ));
m_treeImages.Add(pApp->LoadIcon(IDI_FOLDER_YELLOW_OPEN ));
m_treeFolder.SetImageList(&m_treeImages,TVSIL_NORMAL);
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
CString sDBName = m_AdoConn.GetDBName();
int i=sDBName.ReverseFind('\\');
CString nFileText = _T("[") + sDBName.Mid(i+1) + _T("]");
//insert item
long lItemTitle;
CString sItemTitle;
// item created
HTREEITEM tiTestNode;
HTREEITEM tiParentNode;
//insert root item
TVINSERTSTRUCT tvInsert;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = nFileText.GetBuffer();
m_treeFolder.DeleteAllItems();
HTREEITEM h_root=m_treeFolder.InsertItem(&tvInsert);
//add categroes
CString sql;
sql.Format(_T("select * from tbCategores order by No desc"));
_RecordsetPtr pRecordset;
pRecordset = m_AdoConn.GetRecordset((_bstr_t)sql);
while(!m_AdoConn.m_pRecordset->adoEOF)
{
_variant_t vIDCat, vCategores, vParentID;
vIDCat = pRecordset->GetCollect("IDCat");
vCategores= pRecordset->GetCollect("Categores");
vParentID = pRecordset->GetCollect("ParentID");
sItemTitle = (TCHAR*)(_bstr_t)vCategores;
lItemTitle = vIDCat.lVal;
// insert the node
if(vParentID.vt != VT_NULL)
tiParentNode = FindItem((long)(vParentID.lVal)); //查找父節(jié)點(diǎn)
if(vIDCat.lVal==0)
{
tiTestNode = m_treeFolder.InsertItem(sItemTitle,1,2,h_root);
m_treeFolder.SetItemData(tiTestNode,lItemTitle);
}
//for the other nodes
if( tiParentNode )
{
tiTestNode = m_treeFolder.InsertItem(sItemTitle,1,2, tiParentNode);
m_treeFolder.SetItemData(tiTestNode, lItemTitle);
}
pRecordset->MoveNext();
}
m_treeFolder.Expand(m_treeFolder.GetRootItem(), TVE_EXPAND);
m_treeFolder.EnableMultiSelect(FALSE);
m_AdoConn.ExitConnect();
}
//查找某一個(gè)節(jié)點(diǎn)
HTREEITEM CGalleryDlg::FindItem(long lItemData)
{
// the tree object
// the current item
HTREEITEM tiItem= m_treeFolder.GetNextItem(TVGN_ROOT,TVGN_ROOT);
long lCurrentData;
while (tiItem)
{
m_treeFolder.Expand(tiItem,TVE_EXPAND);
lCurrentData = (long)m_treeFolder.GetItemData(tiItem);
if( lCurrentData == lItemData )
return tiItem;
tiItem= m_treeFolder.GetNextItem(tiItem,TVGN_NEXTVISIBLE);
}
return NULL;
}
下圖是填充目錄后的Treectrl。
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
久久精品www人人爽人人
|
不卡在线
|
国产高清在线观看
|
中文字字幕在线
|
黄片毛片|
91久久久久国产一区二区
|
久艹在线|
高清乱码男女免费观看
|
国产精品一二三四区
|
一级免费视频
|
久久精品国产成人av
|
国产伊人网
|
蜜臀久久99精品久久久久宅男
|
久久香蕉国产
|
欧美综合久久
|
91久色
|
小镇姑娘国语版在线观看免费
|
亚洲综合激情网
|
欧美激情成人
|
午夜精品视频在线
|
日韩欧美一区在线
|
亚洲经典一区二区
|
亚洲激情一区二区
|
欧美在线观看视频
|
欧美在线观看视频
|
精品视频999
|
美女在线播放
|
中文字幕第一区
|
国产中文一区
|
欧美精品久久久久久久多人混战
|
av一级在线
|
日韩黄色大片
|
欧美成人一级片
|
在线看片你懂的
|
不卡免费视频
|
国产91清纯白嫩初高中在线观看
|
亚洲经典一区二区
|
日本不卡视频在线观看
|
黑人操亚洲女人
|
一区二区三区av
|
国产精品成人国产乱一区
|