BOOL RenameVolumeDialog::OnInitDialog(void) { /* do the DoDataExchange stuff */ CDialog::OnInitDialog(); CTreeCtrl* pTree = (CTreeCtrl*) GetDlgItem(IDC_RENAMEVOL_TREE); DiskImgLib::DiskFS* pDiskFS = fpArchive->GetDiskFS(); ASSERT(pTree != NULL); fDiskFSTree.fIncludeSubdirs = false; fDiskFSTree.fExpandDepth = -1; if (!fDiskFSTree.BuildTree(pDiskFS, pTree)) { LOGI("Tree load failed!"); OnCancel(); } int count = pTree->GetCount(); LOGI("ChooseAddTargetDialog tree has %d items", count); /* select the default text and set the focus */ CEdit* pEdit = (CEdit*) GetDlgItem(IDC_RENAMEVOL_NEW); ASSERT(pEdit != NULL); pEdit->SetSel(0, -1); pEdit->SetFocus(); return FALSE; // we set the focus }
// 모든 트리노드를 펼친다. void CPanelBase::ExpandAll(CTreeCtrl &treeCtrl) { HTREEITEM hRoot = treeCtrl.GetRootItem(); vector<HTREEITEM> items; items.reserve(treeCtrl.GetCount()); items.push_back(hRoot); while (!items.empty()) { HTREEITEM hItem = items.back(); items.pop_back(); treeCtrl.Expand(hItem, TVE_EXPAND); HTREEITEM hfirstChild = treeCtrl.GetChildItem(hItem); if (hfirstChild) { items.push_back(hfirstChild); while (HTREEITEM hNextItem = treeCtrl.GetNextSiblingItem(hfirstChild)) { items.push_back(hNextItem); hfirstChild = hNextItem; } } } treeCtrl.SelectSetFirstVisible(hRoot); }
void CDiagRunView::CreateTree_OnOpen(Node *node, HTREEITEM parent_item, CModelTree *pTreeView, CTreeCtrl& m_ctlTree) { if (node->IsDeleted()) return; else { int treecount = m_ctlTree.GetCount(); pTreeView->m_Tree.TreeItem[treecount-1]=m_ctlTree.InsertItem(node->GetName(),0,1,parent_item,TVI_LAST); pTreeView->m_Tree.NodeArray.Add(node); parent_item=pTreeView->m_Tree.TreeItem[treecount-1]; int childcount=node->outLine.GetSize(); for (int i=0;i<childcount;i++) { Node *son_node=node->outLine.GetAt(i)->sonNode; CreateTree_OnOpen(son_node,parent_item,pTreeView,m_ctlTree); } } }
HTREEITEM CPanelBase::FindTree( CTreeCtrl &treeCtrl, const wstring &findText ) { HTREEITEM hRoot = treeCtrl.GetRootItem(); vector<HTREEITEM> items; items.reserve(treeCtrl.GetCount()); wstring lowerText = findText; lowerCasew(lowerText); items.push_back(hRoot); while (!items.empty()) { HTREEITEM hItem = items.back(); items.pop_back(); CString itemText = treeCtrl.GetItemText(hItem); CString lowerItemText = lowerCasew((wstring)itemText).c_str(); const int idx = lowerItemText.Find(lowerText.c_str()); if (idx >= 0) return hItem; HTREEITEM hfirstChild = treeCtrl.GetChildItem(hItem); if (hfirstChild) { items.push_back(hfirstChild); while (HTREEITEM hNextItem = treeCtrl.GetNextSiblingItem(hfirstChild)) { items.push_back(hNextItem); hfirstChild = hNextItem; } } } return NULL; }