HTREEITEM FileBrowser::createNewFolder(HTREEITEM hTreeItem, const TCHAR *folderName) { HTREEITEM addedItem = _treeView.addItem(folderName, hTreeItem, INDEX_CLOSE_NODE); TreeView_Expand(_treeView.getHSelf(), hTreeItem, TVE_EXPAND); TreeView_EditLabel(_treeView.getHSelf(), addedItem); if (getNodeType(hTreeItem) == browserNodeType_folder) _treeView.setItemImage(hTreeItem, INDEX_OPEN_NODE, INDEX_OPEN_NODE); return addedItem; }
BOOL wbSetTreeViewItemState(PWBOBJ pwbo, HTREEITEM hItem, BOOL bExpand) { if(!pwbo || !pwbo->hwnd || !IsWindow(pwbo->hwnd)) return FALSE; if(!hItem) return FALSE; // return TreeView_Expand(pwbo->hwnd, hItem, TVE_TOGGLE);//bExpand ? TVE_EXPAND : TVE_COLLAPSE); return TreeView_Expand(pwbo->hwnd, hItem, bExpand ? TVE_EXPAND : TVE_COLLAPSE); }
CATResult CATTreeCtrl::ExpandItem(CATTREEINFO* item, bool expand) { if (item == 0) { return CATRESULT(CAT_ERR_INVALID_PARAM); } ::ShowWindow(fControlWnd,SW_HIDE); TreeView_Expand(fControlWnd, item->ItemHandle, expand?TVE_EXPAND:TVE_COLLAPSE); ::ShowWindow(fControlWnd,IsVisible()?SW_SHOW:SW_HIDE); return CAT_SUCCESS; }
static void TreeView_ExpandRecursively(HWND hTree, HTREEITEM hItem, UINT flag, bool subtree=false) { while (hItem) { TreeView_Expand(hTree, hItem, flag); HTREEITEM child = TreeView_GetChild(hTree, hItem); if (child) TreeView_ExpandRecursively(hTree, child, flag); if (subtree) break; hItem = TreeView_GetNextSibling(hTree, hItem); } }
bool ExpandNode(_Ty Key, UINT fMask) { HTREEITEM hItem = KeyToHandle(Key); if (NULL != hItem) { return WND_TRUE(TreeView_Expand(m_hWnd, hItem, fMask)); } return false; }
// 怕一些静态变量可能冲突,由宏改为函数 // 当目录下删除最后一张叶子后, 直接设TVIF_CHILDREN为0, 不能除去前面-符号. 增加TreeView_Expand还是不行 void TreeView_SetChilerenByPath(HWND hctl, HTREEITEM htvi, char *path) { // 这里要求要是path是文件的话(原则上是不应该是出现的,但调用程序可能不小心出现), is_empty_dir需要返回TRUE, // 否则这个文件叶子要被错误的被cChildren置为1. if (is_empty_dir(path)) { TreeView_Expand(hctl, htvi, TVE_COLLAPSE); TreeView_SetItem1(hctl, htvi, TVIF_CHILDREN, 0, 0, 0, 0, NULL); } else { TreeView_SetItem1(hctl, htvi, TVIF_CHILDREN, 0, 0, 0, 1, NULL); } return; }
HTREEITEM ShellBrowser::select_entry(HTREEITEM hitem, Entry* entry, bool expand) { CONTEXT("ShellBrowser::select_entry()"); if (expand && !TreeView_Expand(_left_hwnd, hitem, TVE_EXPAND)) return 0; for(hitem=TreeView_GetChild(_left_hwnd,hitem); hitem; hitem=TreeView_GetNextSibling(_left_hwnd,hitem)) { if ((Entry*)TreeView_GetItemData(_left_hwnd,hitem) == entry) { if (TreeView_SelectItem(_left_hwnd, hitem)) { if (expand) TreeView_Expand(_left_hwnd, hitem, TVE_EXPAND); return hitem; } break; } } return 0; }
bool CDeviceView::ListDevicesByConnection() { // Walk the device tree and add all the devices (void)RecurseChildDevices(m_RootNode->GetDeviceInst(), m_hTreeRoot); // Expand the root item (void)TreeView_Expand(m_hTreeView, m_hTreeRoot, TVE_EXPAND); return true; }
VOID InitCategoriesList(VOID) { HTREEITEM hRootItem1, hRootItem2; /* Create image list */ hImageTreeView = ImageList_Create(TREEVIEW_ICON_SIZE, TREEVIEW_ICON_SIZE, GetSystemColorDepth() | ILC_MASK, 0, 1); hRootItem1 = AddCategory(TVI_ROOT, IDS_INSTALLED, IDI_CATEGORY); AddCategory(hRootItem1, IDS_APPLICATIONS, IDI_APPS); AddCategory(hRootItem1, IDS_UPDATES, IDI_APPUPD); hRootItem2 = AddCategory(TVI_ROOT, IDS_AVAILABLEFORINST, IDI_CATEGORY); AddCategory(hRootItem2, IDS_CAT_AUDIO, IDI_CAT_AUDIO); AddCategory(hRootItem2, IDS_CAT_VIDEO, IDI_CAT_VIDEO); AddCategory(hRootItem2, IDS_CAT_GRAPHICS, IDI_CAT_GRAPHICS); AddCategory(hRootItem2, IDS_CAT_GAMES, IDI_CAT_GAMES); AddCategory(hRootItem2, IDS_CAT_INTERNET, IDI_CAT_INTERNET); AddCategory(hRootItem2, IDS_CAT_OFFICE, IDI_CAT_OFFICE); AddCategory(hRootItem2, IDS_CAT_DEVEL, IDI_CAT_DEVEL); AddCategory(hRootItem2, IDS_CAT_EDU, IDI_CAT_EDU); AddCategory(hRootItem2, IDS_CAT_ENGINEER, IDI_CAT_ENGINEER); AddCategory(hRootItem2, IDS_CAT_FINANCE, IDI_CAT_FINANCE); AddCategory(hRootItem2, IDS_CAT_SCIENCE, IDI_CAT_SCIENCE); AddCategory(hRootItem2, IDS_CAT_TOOLS, IDI_CAT_TOOLS); AddCategory(hRootItem2, IDS_CAT_DRIVERS, IDI_CAT_DRIVERS); AddCategory(hRootItem2, IDS_CAT_LIBS, IDI_CAT_LIBS); AddCategory(hRootItem2, IDS_CAT_OTHER, IDI_CAT_OTHER); (VOID) TreeView_SetImageList(hTreeView, hImageTreeView, TVSIL_NORMAL); (VOID) TreeView_Expand(hTreeView, hRootItem2, TVE_EXPAND); (VOID) TreeView_Expand(hTreeView, hRootItem1, TVE_EXPAND); (VOID) TreeView_SelectItem(hTreeView, hRootItem1); }
void CPpcFolderDlg::OnBtnDown(HWND hDlg, WPARAM wParam) { TV_ITEM tvi; HWND hWnd = GetDlgItem(hDlg, IDC_TREE_FOLDER); HTREEITEM hItem = TreeView_GetSelection(hWnd); if (!hItem) return; memset(&tvi, 0, sizeof(tvi)); tvi.mask = TVIF_CHILDREN | TVIF_STATE; tvi.hItem = hItem; TreeView_GetItem(hWnd, &tvi); if (tvi.cChildren) { if (wParam == VK_RIGHT) { if (!(tvi.state & TVIS_EXPANDED)) TreeView_Expand(hWnd, hItem, TVE_EXPAND); else { hItem = TreeView_GetChild(hWnd, hItem); TreeView_SelectItem(hWnd, hItem); } } else { if (tvi.state & TVIS_EXPANDED) TreeView_Expand(hWnd, hItem, TVE_COLLAPSE); else { hItem = TreeView_GetParent(hWnd, hItem); TreeView_SelectItem(hWnd, hItem); } } } else { if (wParam == VK_LEFT) { hItem = TreeView_GetParent(hWnd, hItem); TreeView_SelectItem(hWnd, hItem); } } }
void RecursiveCreateTree(HTREEITEM parent, HTREEITEM pos, PROJECTITEM *proj) { while (proj) { TVInsertItem(prjTreeWindow, parent, pos, proj); ResAddItem(proj); if (proj->children) { RecursiveCreateTree(proj->hTreeItem, TVI_LAST, proj->children); TreeView_Expand(prjTreeWindow, proj->hTreeItem, proj->expanded ? TVE_EXPAND : TVE_COLLAPSE); } proj = proj->next; } }
bool NGMainWnd::onnet_directories(const string &path, const vector<string> &directories, const vector<dword> &types, const vector<dword> &childrens) { HTREEITEM hparent = NULL; // find the parent treenode in the path list for (dword i = 0; i < browsenodes.size(); i++) { if (browsenodes[i].path.compare(path) == 0) { hparent = browsenodes[i].hnode; break; } } if (hparent != NULL) { // delete previous children for (long i = (browsenodes.size() - 1); i >= 0; i--) { if (browsenodes[i].hparent == hparent) { TreeView_DeleteItem(this->hbrowsewnd, browsenodes[i].hnode); browsenodes.erase(browsenodes.begin() + i); } } // append new children for (dword i = 0; i < directories.size(); i++) { if (childrens[i] > 0) { this->client->request_bw_getdirectories(path + directories[i]); } // update tree items TVINSERTSTRUCT tvi; memset(&tvi, 0, sizeof(TVINSERTSTRUCT)); tvi.hParent = hparent; tvi.hInsertAfter = TVI_LAST; tvi.itemex.mask = TVIF_CHILDREN | TVIF_IMAGE | TVIF_TEXT; if (childrens[i] > 0) { tvi.itemex.cChildren = 1; } else { tvi.itemex.cChildren = 0; } tvi.itemex.pszText = (LPSTR)directories[i].c_str(); tvi.itemex.iImage = ICON_MAIN; this->browsenodes.push_back(PathNode(hparent, TreeView_InsertItem(this->hbrowsewnd, &tvi), path + directories[i] + "/", types[i])); } // if root, auto-expand if (path.compare("/") == 0) { TreeView_Expand(this->hbrowsewnd, hparent, TVE_EXPAND); } } return true; }
// TreeView 全開・全閉 void TreeView_ExpandAll(HWND hwndTree, bool bExpand, int nMaxDepth) { HTREEITEM htiCur; HTREEITEM htiItem; HTREEITEM htiNext; ::SendMessageAny(hwndTree, WM_SETREDRAW, (WPARAM)FALSE, 0); htiCur = htiItem = TreeView_GetSelection( hwndTree ); if (!bExpand && htiCur != NULL) { // 閉じる時はトップに変更 for (htiNext = htiCur; htiNext != NULL; ) { htiItem = htiNext; htiNext = TreeView_GetParent( hwndTree, htiItem ); } if (htiCur != htiItem) { htiCur = htiItem; TreeView_SelectItem( hwndTree, htiCur ); } } std::vector<HTREEITEM> tree; HTREEITEM item = TreeView_GetRoot(hwndTree); while( 0 < tree.size() || item != NULL ){ while(item != NULL && (int)tree.size() < nMaxDepth ){ // 先に展開してからGetChildしないと、ファイルツリーのサブアイテムが展開されない TreeView_Expand(hwndTree, item, bExpand ? TVE_EXPAND : TVE_COLLAPSE); tree.push_back(item); item = TreeView_GetChild(hwndTree, item); } item = tree.back(); tree.pop_back(); item = TreeView_GetNextSibling(hwndTree, item); } // 選択位置を戻す if (htiCur == NULL) { if (bExpand ) { htiItem = TreeView_GetRoot( hwndTree ); TreeView_SelectSetFirstVisible( hwndTree, htiItem ); } TreeView_SelectItem( hwndTree, NULL ); } else { TreeView_SelectSetFirstVisible( hwndTree, htiCur ); } ::SendMessageAny(hwndTree, WM_SETREDRAW, (WPARAM)TRUE, 0); }
/* ** Selects an item in the treeview. ** */ void CDialogManage::CTabSkins::SelectTreeItem(HWND tree, HTREEITEM item, LPCWSTR name) { WCHAR buffer[MAX_PATH]; TVITEM tvi = {0}; tvi.mask = TVIF_TEXT; tvi.hItem = item; tvi.pszText = buffer; const WCHAR* pos = wcschr(name, L'\\'); if (pos) { const int folderLen = (int)(pos - name); tvi.cchTextMax = folderLen + 1; // Length of folder name plus 1 for NULL // Find and expand the folder do { TreeView_GetItem(tree, &tvi); if (wcsncmp(buffer, name, folderLen) == 0) { if ((item = TreeView_GetChild(tree, tvi.hItem)) != NULL) { TreeView_Expand(tree, tvi.hItem, TVE_EXPAND); ++pos; // Skip the slash SelectTreeItem(tree, item, pos); } break; } } while ((tvi.hItem = TreeView_GetNextSibling(tree, tvi.hItem)) != NULL); } else { tvi.cchTextMax = MAX_PATH; // Find and select the file do { TreeView_GetItem(tree, &tvi); if (wcscmp(buffer, name) == 0) { TreeView_Select(tree, tvi.hItem, TVGN_CARET); break; } } while ((tvi.hItem = TreeView_GetNextSibling(tree, tvi.hItem)) != NULL); } }
bool SimTreeView::handleItemCollapse( HTREEITEM hParent, HTREEITEM hItem ) { hParent; lockManager(); TV_ITEM *tvi = treeList.getItemInfo( hItem ); SimObject *obj = getObject( hItem ); if ( dynamic_cast<SimSet*>(obj) ) { tvi->mask = TVIF_IMAGE; tvi->iImage = handleGetBitmapIndex( hItem, false ); TreeView_SetItem( treeList.getHandle(), tvi ); } TreeView_Expand( treeList.getHandle(), hItem, TVE_COLLAPSE|TVE_COLLAPSERESET ); unlockManager(); return true; }
void CFolderDlg::OnInitDialog(HWND hDlg) { CTempStr str(IDS_ROOT_FOLDER_NAME); ShellInitDialog(hDlg); HWND hTreeView = GetDlgItem(hDlg, IDC_TREE_FOLDER); m_bRefresh = FALSE; m_hImageList = NULL; HICON hIcon; //イメージリスト作成 m_hImageList = ImageList_Create(SCALEX(16), SCALEY(16), ILC_COLOR|ILC_MASK, 1, 2); hIcon = (HICON)LoadImage(GetInst(), (LPCTSTR)IDI_ROOT, IMAGE_ICON, SCALEX(16), SCALEY(16), 0); ImageList_AddIcon(m_hImageList, hIcon); DeleteObject(hIcon); SHFILEINFO shfi; SHGetFileInfo(_T("\\Windows"), NULL, &shfi, sizeof(shfi), SHGFI_SMALLICON | SHGFI_ICON); ImageList_AddIcon(m_hImageList, shfi.hIcon); TreeView_SetImageList(hTreeView, m_hImageList, TVSIL_NORMAL); SetWindowLong(hTreeView, GWL_STYLE, GetWindowLong(hTreeView, GWL_STYLE)|TVS_HASBUTTONS|TVS_HASLINES|TVS_SHOWSELALWAYS); //フォルダ読み込み HCURSOR hCursor = SetCursor(LoadCursor(NULL, IDC_WAIT)); TVINSERTSTRUCT tvis; tvis.hParent = NULL; tvis.hInsertAfter = TVI_SORT; tvis.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_CHILDREN; tvis.item.pszText = str; tvis.item.iImage = 0; tvis.item.iSelectedImage = 0; tvis.item.cChildren = 1; HTREEITEM hRoot = TreeView_InsertItem(hTreeView, &tvis); TreeView_Expand(hTreeView, hRoot, TVE_EXPAND); //カレントフォルダをセット SetCurrentFolder(hTreeView, m_pszPath); if (m_bSubFolder) SendMessage(GetDlgItem(hDlg, IDC_CHECK_SUBFOLDER), BM_SETCHECK, 1, 0); SetCursor(hCursor); }
void SimTreeView::handleItemExpansion( HTREEITEM /*hParent*/, HTREEITEM hItem ) { SimSet *set; lockManager(); TV_ITEM *tvi = treeList.getItemInfo( hItem ); SimObject *obj = getObject( hItem ); if ( (set = dynamic_cast<SimSet*>(obj)) != 0 ) { TreeView_Expand( treeList.getHandle(), hItem, TVE_COLLAPSE|TVE_COLLAPSERESET ); tvi->mask = TVIF_IMAGE; tvi->iImage = handleGetBitmapIndex( hItem, true ); TreeView_SetItem( treeList.getHandle(), tvi ); for ( SimObjectList::iterator iter=set->begin(); iter!=set->end(); iter++ ) addSet( *iter, hItem ); } unlockManager(); }
int CALLBACK BrowseForFolderCallbackProc(HWND wnd_handle,UINT message,LPARAM lparam,LPARAM data){ static HWND edit_handle,tree_handle; switch(message){ case BFFM_INITIALIZED:{ if(data){ //初期ディレクトリ設定 SendMessage(wnd_handle,BFFM_SETSELECTION,(WPARAM)true,(LPARAM)data); edit_handle=::FindWindowEx(wnd_handle,NULL,WC_EDIT,NULL); if(edit_handle){ //エディットコントロールにオートコンプリート機能を実装 ::SHAutoComplete(edit_handle,SHACF_FILESYSTEM|SHACF_URLALL|SHACF_FILESYS_ONLY|SHACF_USETAB); } ::EnumChildWindows(wnd_handle,EnumChildCallbackProc,(LPARAM)&tree_handle); ::SetFocus(tree_handle); } break; } case BFFM_SELCHANGED:{ LPITEMIDLIST item_id_list=(LPITEMIDLIST)lparam; TCHAR directory[MAX_PATHW]={}; //TODO:マイコンピュータを素通りしてしまう if(SHGetPathFromIDList(item_id_list,directory)){ if(edit_handle){ SendMessage(edit_handle,WM_SETTEXT,(WPARAM)0,(LPARAM)path::addTailSlash(directory).c_str()); } } TreeView_Expand(tree_handle,TreeView_GetSelection(tree_handle),TVE_EXPAND); TreeView_EnsureVisible(tree_handle,TreeView_GetSelection(tree_handle)); ::SetFocus(tree_handle); break; } //無効なディレクトリ名であった場合 case BFFM_VALIDATEFAILED: return 1; default: break; } return 0; }
/* * select_folder_proc - フォルダ選択ウィンドウプロシージャ */ static BOOL CALLBACK select_folder_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { HTREEITEM hItem; switch (uMsg) { case WM_INITDIALOG: // イメージリストの設定 TreeView_SetImageList(GetDlgItem(hDlg, IDC_TREE), create_imagelist(hInst), TVSIL_NORMAL); // アイテムの作成 regist_treeitem = treeview_set_item(GetDlgItem(hDlg, IDC_TREE), message_get_res(IDS_TREEITEM_REGIST), (HTREEITEM)TVI_ROOT, (HTREEITEM)TVI_LAST, ICON_REGIST, ICON_REGIST, 0); treeview_datainfo_to_treeitem(GetDlgItem(hDlg, IDC_TREE), regist_treeitem, (DATA_INFO *)lParam); TreeView_Expand(GetDlgItem(hDlg, IDC_TREE), TreeView_GetRoot(GetDlgItem(hDlg, IDC_TREE)), TVE_EXPAND); // パスからアイテムを検索 if ((hItem = treeview_path_to_item(GetDlgItem(hDlg, IDC_TREE), regist_treeitem, ret_str)) != NULL) { TreeView_SelectItem(GetDlgItem(hDlg, IDC_TREE), hItem); } break; case WM_CLOSE: EndDialog(hDlg, FALSE); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: SendMessage(hDlg, WM_CLOSE, 0, 0); break; case IDOK: // 選択アイテムのパス取得 treeview_get_path(GetDlgItem(hDlg, IDC_TREE), regist_treeitem, TreeView_GetSelection(GetDlgItem(hDlg, IDC_TREE)), ret_str); EndDialog(hDlg, TRUE); break; } break; default: return FALSE; } return TRUE; }
void RefreshModelTree() { TVITEM item; HWND hwndTree = GetControl(IDC_MODELS); TreeView_DeleteAllItems(hwndTree); // Loop over all of the registered targets (COS IDs) and add them to the view for (TargetIterator targetIter = g_targets.begin(); targetIter != g_targets.end(); targetIter++) { item.mask = TVIF_TEXT | TVIF_IMAGE; item.cChildren = targetIter->cosIDs.size() > 0 ? 1 : 0; item.pszText = targetIter->model_filename; item.cchTextMax = (int)wcsnlen(item.pszText, sizeof(targetIter->model_filename)/sizeof(targetIter->model_filename[0])); item.iImage = 3; // Invalid image ID to appear white TVINSERTSTRUCT tvinsert; tvinsert.hParent = TVI_ROOT; tvinsert.item = item; tvinsert.hInsertAfter = TVI_LAST; HTREEITEM parent = TreeView_InsertItem(hwndTree, &tvinsert); for (TrackingIterator iter = targetIter->cosIDs.begin(); iter != targetIter->cosIDs.end(); iter++) { pxcCHAR buf[260] = {'\0'}; item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_PARAM; item.cChildren = 0; _snwprintf_s(buf, 260, L"ID: %2d Name: %ws", iter->cosID, iter->friendlyName); item.pszText = buf; item.cchTextMax = (int) wcsnlen(item.pszText,sizeof(buf)/sizeof(buf[0])); item.iImage = I_IMAGECALLBACK; item.lParam = (iter - targetIter->cosIDs.begin() << 8) | (targetIter - g_targets.begin()); TVINSERTSTRUCT tvinsert; tvinsert.hParent = parent; tvinsert.item = item; tvinsert.hInsertAfter = TVI_LAST; TreeView_InsertItem(hwndTree, &tvinsert); } TreeView_Expand(hwndTree, parent, TVE_EXPAND); } }
VOID ListDevicesByType(HWND hTreeView, HTREEITEM hRoot, BOOL bShowHidden) { PDEVCLASS_ENTRY pClassArray; ULONG ulClassCount; ulClassCount = GetClassCount(); pClassArray = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, ulClassCount * sizeof(DEVCLASS_ENTRY)); if (pClassArray == NULL) return; EnumDeviceClasses(hTreeView, hRoot, pClassArray, ulClassCount); EnumDevices(hTreeView, pClassArray, ulClassCount, bShowHidden); CleanupDeviceClasses(hTreeView, pClassArray, ulClassCount); if (pClassArray != NULL) HeapFree(GetProcessHeap(), 0, pClassArray); (void)TreeView_Expand(hTreeView, hRoot, TVE_EXPAND); (void)TreeView_SortChildren(hTreeView, hRoot, 0); (void)TreeView_SelectItem(hTreeView, hRoot); }
static HTREEITEM treeview_insert(treeview_faff * faff, int level, char *text, char *path) { // text will be the label of an Options dialog treeview item; // it is passed in here as the basename of path HTREEITEM newitem; if (nonascii(path)) { wchar * utext = cs__utftowcs(text); TVINSERTSTRUCTW ins; ins.hParent = (level > 0 ? faff->lastat[level - 1] : TVI_ROOT); ins.hInsertAfter = faff->lastat[level]; ins.item.mask = TVIF_TEXT | TVIF_PARAM; ins.item.pszText = utext; //ins.item.cchTextMax = wcslen(utext) + 1; // ignored when setting ins.item.lParam = (LPARAM) path; // It is essential to also use TVM_INSERTITEMW here! newitem = (HTREEITEM)SendMessageW(faff->treeview, TVM_INSERTITEMW, 0, (LPARAM)&ins); //TreeView_SetUnicodeFormat((HWND)newitem, TRUE); // does not work free(utext); } else { TVINSERTSTRUCTA ins; ins.hParent = (level > 0 ? faff->lastat[level - 1] : TVI_ROOT); ins.hInsertAfter = faff->lastat[level]; ins.item.mask = TVIF_TEXT | TVIF_PARAM; ins.item.pszText = text; //ins.item.cchTextMax = strlen(text) + 1; // ignored when setting ins.item.lParam = (LPARAM) path; //newitem = TreeView_InsertItem(faff->treeview, &ins); newitem = (HTREEITEM)SendMessageA(faff->treeview, TVM_INSERTITEMA, 0, (LPARAM)&ins); } if (level > 0) TreeView_Expand(faff->treeview, faff->lastat[level - 1], (level > 1 ? TVE_COLLAPSE : TVE_EXPAND)); faff->lastat[level] = newitem; for (int i = level + 1; i < 4; i++) faff->lastat[i] = null; return newitem; }
void InsertSubTree(HTREEITEM parent, HTREEITEM after, VARINFO *var, int index, int page) { while (var) { AddTypeInfoToName(watchinfo_list[page][index].dbg_info, var); var->hTreeItem = InsertItem(parent, after, var, page); var->watchindex = index; var->watchhead.col1Text = &var->screenname; var->watchhead.col2Text = &var->value; if (var->pointer && !var->subtype) { var->hTreeHolder = InsertItem(var->hTreeItem, TVI_LAST, var, page); TreeView_Expand(hwndTree[page], var->hTreeItem, TVE_COLLAPSE); } else InsertSubTree(var->hTreeItem, 0, var->subtype, index, page); after = var->hTreeItem; var = var->link; } }
static void InsertSubTree(HTREEITEM parent, HTREEITEM after, VARINFO *var, int index, WATCHDATA *ptr) { while (var) { AddTypeInfoToName(ptr->watchinfo_list[index].dbg_info, var); var->hTreeItem = InsertItem(parent, after, var, ptr); var->watchindex = index; var->watchhead.col1Text = &var->screenname[0]; var->watchhead.col2Text = &var->value[0]; if (var->pointer && !var->subtype && (!var->lref && !var->rref || var->type > eReservedTop)) { var->hTreeHolder = InsertItem(var->hTreeItem, TVI_LAST, var, ptr); TreeView_Expand(ptr->hwndWatchTree, var->hTreeItem, TVE_COLLAPSE); } else InsertSubTree(var->hTreeItem, 0, var->subtype, index, ptr); after = var->hTreeItem; var = var->link; } }
void CBookmarkTreeView::SetupTreeView(const GUID &guidSelected,const NBookmarkHelper::setExpansion_t &setExpansion) { TreeView_DeleteAllItems(m_hTreeView); HTREEITEM hRoot = InsertFolderIntoTreeView(NULL,*m_pAllBookmarks,0); InsertFoldersIntoTreeViewRecursive(hRoot,*m_pAllBookmarks); for each(auto guidExpanded in setExpansion) { auto itrExpanded = m_mapItem.find(guidExpanded); if(itrExpanded != m_mapItem.end()) { CBookmarkFolder &BookmarkFolder = GetBookmarkFolderFromTreeView(itrExpanded->second); if(BookmarkFolder.HasChildFolder()) { TreeView_Expand(m_hTreeView,itrExpanded->second,TVE_EXPAND); } } }
static HTREEITEM treeview_insert(treeview_faff * faff, int level, char *text, char *path) { TVINSERTSTRUCT ins; int i; HTREEITEM newitem; ins.hParent = (level > 0 ? faff->lastat[level - 1] : TVI_ROOT); ins.hInsertAfter = faff->lastat[level]; ins.item.mask = TVIF_TEXT | TVIF_PARAM; ins.item.pszText = text; ins.item.cchTextMax = strlen(text) + 1; ins.item.lParam = (LPARAM) path; newitem = TreeView_InsertItem(faff->treeview, &ins); if (level > 0) TreeView_Expand(faff->treeview, faff->lastat[level - 1], (level > 1 ? TVE_COLLAPSE : TVE_EXPAND)); faff->lastat[level] = newitem; for (i = level + 1; i < 4; i++) faff->lastat[i] = null; return newitem; }
/* * select_folder_proc - フォルダ選択ウィンドウプロシージャ */ static BOOL CALLBACK select_folder_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: SendMessage(GetDlgItem(hDlg, IDC_STATIC_MSG), WM_SETTEXT, 0, (LPARAM)message); // イメージリストの設定 TreeView_SetImageList(GetDlgItem(hDlg, IDC_TREE), TreeView_GetImageList(from_treeview, TVSIL_NORMAL), TVSIL_NORMAL); // アイテムのコピー treeview_copy_tree(from_treeview, from_root_item, GetDlgItem(hDlg, IDC_TREE), TVI_ROOT); TreeView_Expand(GetDlgItem(hDlg, IDC_TREE), TreeView_GetRoot(GetDlgItem(hDlg, IDC_TREE)), TVE_EXPAND); break; case WM_CLOSE: EndDialog(hDlg, FALSE); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: SendMessage(hDlg, WM_CLOSE, 0, 0); break; case IDOK: // 選択アイテムの取得 ret_item = (HTREEITEM)treeview_get_lparam(GetDlgItem(hDlg, IDC_TREE), TreeView_GetSelection(GetDlgItem(hDlg, IDC_TREE))); EndDialog(hDlg, TRUE); break; } break; default: return FALSE; } return TRUE; }
void CMyTreeView::UpdateParent(HTREEITEM hParent) { if(hParent != NULL) { TVITEM tvItem; SFGAOF Attributes = SFGAO_HASSUBFOLDER; BOOL bRes; HRESULT hr; tvItem.mask = TVIF_PARAM|TVIF_HANDLE; tvItem.hItem = hParent; bRes = TreeView_GetItem(m_hTreeView,&tvItem); if(bRes) { hr = GetItemAttributes(m_pItemInfo[static_cast<int>(tvItem.lParam)].pidl, &Attributes); if(SUCCEEDED(hr)) { /* If the parent folder no longer has any sub-folders, set its number of children to 0. */ if((Attributes & SFGAO_HASSUBFOLDER) != SFGAO_HASSUBFOLDER) { tvItem.cChildren = 0; TreeView_Expand(m_hTreeView,hParent,TVE_COLLAPSE); } else { tvItem.cChildren = 1; } tvItem.mask = TVIF_CHILDREN; tvItem.hItem = hParent; TreeView_SetItem(m_hTreeView,&tvItem); } } } }
static int BuildMenuTree(HWND hToolBarTree,SortedList * sl) { TVINSERTSTRUCT tvis; int i; HTREEITEM hParent=NULL; tvis.hParent = NULL; tvis.hInsertAfter = TVI_LAST; tvis.item.mask = TVIF_PARAM | TVIF_TEXT; TreeView_DeleteAllItems( hToolBarTree ); if (!sl) return 1; qsort(sl->items,sl->realCount,sizeof(ButtonData *),sstOpSortButtons); for ( i=0; i < sl->realCount; i++ ) { ButtonData * bd= (ButtonData *)sl->items[i]; if(bd->dwOPFlags&QMF_DELETNEEDED) continue; tvis.item.lParam= (LPARAM) bd; tvis.item.pszText= bd->pszOpName; if(bd->fEntryOpType==0) tvis.hParent = NULL; hParent=TreeView_InsertItem( hToolBarTree, &tvis ); if(tvis.hParent) TreeView_Expand( hMenuTree, tvis.hParent, TVE_EXPAND ); if (!bd->pszOpValue&&bd->fEntryOpType==0) { tvis.hParent = hParent; } // else if (!(bd->fEntryOpType&QMF_EX_CHILD)) // tvis.hParent = NULL; } return 1; }
void ShellBrowserChild::InitializeTree() { CONTEXT("ShellBrowserChild::InitializeTree()"); TreeView_SetImageList(_left_hwnd, _himl, TVSIL_NORMAL); TreeView_SetScrollTime(_left_hwnd, 100); TV_INSERTSTRUCT tvInsert; TV_ITEM& tvItem = tvInsert.item; tvInsert.hParent = 0; tvInsert.hInsertAfter = TVI_LAST; tvItem.mask = TVIF_PARAM | TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_CHILDREN; tvItem.lParam = (LPARAM)_root._entry; tvItem.pszText = _root._volname; //LPSTR_TEXTCALLBACK; tvItem.iImage = tvItem.iSelectedImage = I_IMAGECALLBACK; tvItem.cChildren = 1; HTREEITEM hItem = TreeView_InsertItem(_left_hwnd, &tvInsert); TreeView_SelectItem(_left_hwnd, hItem); TreeView_Expand(_left_hwnd, hItem, TVE_EXPAND); }