예제 #1
0
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;
}
예제 #2
0
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;
}
예제 #4
0
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);
    }
}
예제 #5
0
    bool ExpandNode(_Ty Key, UINT fMask) {

        HTREEITEM hItem = KeyToHandle(Key);

        if (NULL != hItem) {

            return WND_TRUE(TreeView_Expand(m_hWnd, hItem, fMask));

        }

        return false;
    }
예제 #6
0
// 怕一些静态变量可能冲突,由宏改为函数
// 当目录下删除最后一张叶子后, 直接设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;
}
예제 #7
0
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;
}
예제 #8
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;
}
예제 #9
0
파일: winmain.c 프로젝트: rmallof/reactos
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);
}
예제 #10
0
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);
		}
	}
}
예제 #11
0
파일: prjwnd.c 프로젝트: bencz/OrangeC
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;
    }
}
예제 #12
0
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;
}
예제 #13
0
파일: StdControl.cpp 프로젝트: beru/sakura
	// 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);
	}
예제 #14
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);
	}
}
예제 #15
0
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;
}   
예제 #16
0
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);
}
예제 #17
0
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();
}   
예제 #18
0
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;
}
예제 #19
0
파일: SelectPath.c 프로젝트: tobynet/clcl
/*
 * 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;
}
예제 #20
0
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);
	}
}
예제 #21
0
파일: enumdevices.c 프로젝트: RPG-7/reactos
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);
}
예제 #22
0
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;
}
예제 #23
0
파일: dbgwatch.c 프로젝트: doniexun/OrangeC
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;
    }
}
예제 #24
0
파일: dbgwatch.c 프로젝트: bencz/OrangeC
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;
    }
}
예제 #25
0
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);
			}
		}
	}
예제 #26
0
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;
}
예제 #27
0
파일: SelectFolder.c 프로젝트: tobynet/clcl
/*
 * 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);
			}
		}
	}
}
예제 #29
0
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;
}
예제 #30
0
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);
}