Beispiel #1
0
void CConfig::FillTree(HWND hTree,bool bCList)
{
	TreeView_DeleteAllItems(hTree);

	TVINSERTSTRUCT tvis;
	tvis.hParent=NULL;
	tvis.hInsertAfter=TVI_LAST;
	tvis.item.mask=TVIF_PARAM|TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;	
	
	vector<CProtoFilter*>::iterator iter = m_ProtoList.begin();
	while(iter != m_ProtoList.end())
	{
		tvis.item.lParam=(LPARAM)(*iter);
		tvis.item.pszText= (LPTSTR)(*iter)->strName.c_str();
		if(!bCList)
		{
			tvis.item.iImage= (*iter)->bNotificationFilter;
			(*iter)->bTempNotificationFilter = (*iter)->bNotificationFilter;
		}
		else
		{
			tvis.item.iImage= (*iter)->bContactlistFilter;
			(*iter)->bTempContactlistFilter = (*iter)->bContactlistFilter;
		}
		tvis.item.iSelectedImage= tvis.item.iImage;
		
		TreeView_InsertItem(hTree,&tvis);
		iter++;
	}
}
Beispiel #2
0
void OnLSBt(BOOL checkrunning)
{
	ULARGE_INTEGER ullFreeBytesAvailable, ullTotalNumberOfBytes;
	char text[_MAX_PATH];
	HRESULT hr = S_OK;
	HWND hctl = GetDlgItem(gdmgr._hdlg_ddesc, IDC_TV_DDESC_EXPLORER);

	// 1. 删除Treeview中所有项
	TreeView_DeleteAllItems(hctl);

	// 2. 地址栏编辑框
	Edit_SetText(GetDlgItem(gdmgr._hdlg_ddesc, IDC_ET_DDESC_WWWROOT), appendbackslash(game_config::path.c_str()));

	// 3. 向TreeView添加一级内容
	gdmgr._htvroot = TreeView_AddLeaf(hctl, TVI_ROOT);
	strcpy(text, basename(game_config::path.c_str()));
	// 这里一定要设TVIF_CHILDREN, 否则接下折叠后将判断出其cChildren为0, 再不能展开
	TreeView_SetItem1(hctl, gdmgr._htvroot, TVIF_TEXT | TVIF_PARAM | TVIF_CHILDREN, (LPARAM)gdmgr._htvroot, 0, 0, 
		is_empty_dir(game_config::path.c_str())? 0: 1, text);
	dir_2_tv(hctl, gdmgr._htvroot, game_config::path.c_str(), 0);

	// 4. 底下状态
	strncpy(text, game_config::path.c_str(), 2);
	text[2] = '\\';
	text[3] = 0;
	GetDiskFreeSpaceEx(text, &ullFreeBytesAvailable, &ullTotalNumberOfBytes, NULL);
	strcpy(text, format_space_u64n(ullTotalNumberOfBytes.QuadPart));
	Edit_SetText(GetDlgItem(gdmgr._hdlg_ddesc, IDC_ET_DDESC_SUBAREA), formatstr("%s (Avail Space %s)", text, format_space_u64n(ullFreeBytesAvailable.QuadPart)));

	return;
}
Beispiel #3
0
static int BuildMenuObjectsTree(HWND hwndDlg)
{
	TVINSERTSTRUCT tvis;
	HWND hTree = GetDlgItem(hwndDlg,IDC_MENUOBJECTS);
	int i;

	tvis.hParent = NULL;
	tvis.hInsertAfter = TVI_LAST;
	tvis.item.mask = TVIF_PARAM | TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
	TreeView_DeleteAllItems( hTree );
	if ( g_menus.getCount() == 0 )
		return FALSE;

	for ( i=0; i < g_menus.getCount(); i++ ) {
		if ( g_menus[i]->id == (int)hStatusMenuObject  || !g_menus[i]->m_bUseUserDefinedItems )
			continue;

		tvis.item.lParam  = ( LPARAM )g_menus[i]->id;
		tvis.item.pszText = LangPackPcharToTchar( g_menus[i]->Name );
		tvis.item.iImage  = tvis.item.iSelectedImage = TRUE;
		TreeView_InsertItem( hTree, &tvis );
		mir_free( tvis.item.pszText );
	}
	return 1;
}
void ClearModelTree()
{
	Button_Enable(GetControl(IDC_START),false);
	Button_Enable(GetControl(IDC_CLEARMODELS),false);
	g_targets.clear();
	TreeView_DeleteAllItems(GetControl(IDC_MODELS));
}
Beispiel #5
0
int FillTree(HWND hwnd)
{
	ProtocolData *PD;

	TVINSERTSTRUCT tvis;
	tvis.hParent = NULL;
	tvis.hInsertAfter = TVI_LAST;
	tvis.item.mask = TVIF_PARAM | TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;

	TreeView_DeleteAllItems(hwnd);

	int n;
	PROTOACCOUNT** pa;
	Proto_EnumAccounts(&n, &pa);

	for (int i = 0; i < n; i++) {
		if (Proto_IsAccountEnabled(pa[i])) {
			PD = (ProtocolData*)mir_alloc(sizeof(ProtocolData));
			PD->RealName = pa[i]->szModuleName;
			PD->enabled = IsProtoIM(pa[i]);
			PD->show = PD->enabled ? (plSets->ProtoDisabled(PD->RealName) ? 1 : 0) : 100;

			tvis.item.lParam = (LPARAM)PD;
			tvis.item.pszText = pa[i]->tszAccountName;
			tvis.item.iImage = tvis.item.iSelectedImage = PD->show;
			TreeView_InsertItem(hwnd, &tvis);
		}
	}

	return 0;
}
Beispiel #6
0
void CloseBCP()
{
	if(!file) return;
	free(fent); free(fetime);
	fclose(file); file = 0; nfiles = 0;
	TreeView_DeleteAllItems(htree);
}
int rowOptFillRowTree(HWND hwnd)
{
	TreeView_DeleteAllItems(hwnd);
	rowOptGenerateTreeView(rowOptTmplRoot, NULL, hwnd);
	TreeView_Expand(hwnd, TreeView_GetRoot(hwnd), TVM_EXPAND);
	return 0;
}
Beispiel #8
0
//// IFillAgeTree /////////////////////////////////////////////////////////////
//  Refreshes/inits the tree view of all ages we have to work with. If
//  specified, will also get the latest version of the .age files from assetMan.
void plAgeDescInterface::IFillAgeTree( void )
{
    HWND ageTree = GetDlgItem( fhDlg, IDC_AGE_LIST );

    // Clear the tree first and add our two root headers
    TreeView_DeleteAllItems(ageTree);

#ifdef MAXASS_AVAILABLE
    if( fAssetManIface != nil )
        fAssetManBranch = SAddTreeItem(ageTree, nil, "AssetMan Ages", -1);
    else
        fAssetManBranch = nil;
#endif

    fLocalBranch = SAddTreeItem(ageTree, nil, "Local Ages", -1);

    IGetAgeFiles(fAgeFiles);

    // Add the ages to the tree
    for (int i = 0; i < fAgeFiles.size(); i++)
    {
        SAddTreeItem(ageTree,
                    (fAgeFiles[i]->fType == plAgeFile::kAssetFile) ? fAssetManBranch : fLocalBranch,
                    fAgeFiles[i]->fAgeName.c_str(),
                    i);
    }

    // Select the first age to view
    IUpdateCurAge();
}
Beispiel #9
0
void DeleteAllItems(int page)
{
    int i;
    TreeView_DeleteAllItems(hwndTree[page]);
    for (i = 0; i < watchinfo_count[page]; i++)
        FreeVarInfo(watchinfo_list[page][i].info);
    watchinfo_count[page] = 0;
}
Beispiel #10
0
static void DeleteAllItems(WATCHDATA *ptr)
{
    int i;
    TreeView_DeleteAllItems(ptr->hwndWatchTree);
    for (i = 0; i < ptr->watchinfo_count; i++)
        FreeVarInfo(ptr->watchinfo_list[i].info);
    ptr->watchinfo_count = 0;
}
Beispiel #11
0
void TreeCtrl::Clear() {
    HWND hwnd = this->hwnd;
    SendMessage(hwnd, WM_SETREDRAW, FALSE, 0);
    TreeView_DeleteAllItems(hwnd);
    SendMessage(hwnd, WM_SETREDRAW, TRUE, 0);
    UINT flags = RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN;
    RedrawWindow(hwnd, nullptr, nullptr, flags);
}
Beispiel #12
0
bool CWindowTreeDlg::RefreshTree()
{
    TreeView_DeleteAllItems(GetDlgItem(*this, IDC_WINDOWTREE));
    m_lastTreeItem = TVI_ROOT;
    EnumWindows(WindowEnumerator, (LPARAM)this);
    SelectTreeItem(m_SelectedWindow);
    return true;
}
Beispiel #13
0
void    plResTreeView::ClearTreeView( HWND hWnd )
{
    HTREEITEM   root = TreeView_GetRoot( hWnd );
    if( root != nil )
        IDeleteRecurse( hWnd, root );

    TreeView_DeleteAllItems( hWnd );
}
Beispiel #14
0
void ModelTreeDialog::clearTreeView(void)
{
	m_clearing = true;
	SendMessage(m_hTreeView, WM_SETREDRAW, FALSE, 0);
	TreeView_DeleteAllItems(m_hTreeView);
	SendMessage(m_hTreeView, WM_SETREDRAW, TRUE, 0);
	TreeView_SelectItem(m_hTreeView, NULL);
	m_clearing = false;
	updateStatusText();
}
Beispiel #15
0
void TreeView::removeAllItems()
{
	for (HTREEITEM tvProj = getRoot();
        tvProj != NULL;
        tvProj = getNextSibling(tvProj))
	{
		cleanSubEntries(tvProj);
	}
	TreeView_DeleteAllItems(_hSelf);
}
Beispiel #16
0
void
mxTreeView::remove (mxTreeViewItem *item)
{
    if (!d_this)
        return;

    if (!item)
        TreeView_DeleteAllItems (d_this->d_hwnd);
    else
        TreeView_DeleteItem (d_this->d_hwnd, (HTREEITEM) item);
}
Beispiel #17
0
void plComponentDlg::IRefreshTree()
{
    if (fhDlg)
    {
        fCommentNode = nil;

        HWND hTree = GetDlgItem(fhDlg, IDC_TREE);
        TreeView_DeleteAllItems(hTree);
        IAddComponentsRecur(hTree, (plMaxNode*)GetCOREInterface()->GetRootNode());
    }
}
//------------------------------------------------------------------------------
void InitDlgRegfile()
{
  SetWindowText(GetDlgItem(h_reg_file,DLG_REG_ED_NTUSER),"");
  SetWindowText(GetDlgItem(h_reg_file,DLG_REG_ED_SAM),"");
  SetWindowText(GetDlgItem(h_reg_file,DLG_REG_ED_SECURITY),"");
  SetWindowText(GetDlgItem(h_reg_file,DLG_REG_ED_SOFTWARE),"");
  SetWindowText(GetDlgItem(h_reg_file,DLG_REG_ED_SYSTEM),"");
  SetWindowText(GetDlgItem(h_reg_file,DLG_REG_ED_OTHER),"");

  TreeView_DeleteAllItems(GetDlgItem(h_reg,TV_VIEW));
  ListView_DeleteAllItems(GetDlgItem(h_reg,LV_VIEW));
}
void ClearTocBox(WindowInfo *win)
{
    if (!win->tocLoaded)
        return;

    SendMessage(win->hwndTocTree, WM_SETREDRAW, FALSE, 0);
    TreeView_DeleteAllItems(win->hwndTocTree);
    SendMessage(win->hwndTocTree, WM_SETREDRAW, TRUE, 0);
    RedrawWindow(win->hwndTocTree, nullptr, nullptr, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);

    win->currPageNo = 0;
    win->tocLoaded = false;
}
Beispiel #20
0
    bool RemAllNodes(void) {

        bool r = false;

        if (TRUE == TreeView_DeleteAllItems(m_hWnd)) {

            m_Map.clear();
            r = true;

        }

        return r;
    }
void PopulateProtocolList(HWND hWnd)
{
	bool useOne = IsDlgButtonChecked(hWnd, IDC_USEBYPROTOCOL) == BST_UNCHECKED;

	HWND hLstView = GetDlgItem(hWnd, IDC_PROTOLIST);

	TreeView_DeleteAllItems(hLstView);

	TVINSERTSTRUCT tvi = {0};
	tvi.hParent = TVI_ROOT;
	tvi.hInsertAfter = TVI_LAST;
	tvi.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_STATE | TVIF_SELECTEDIMAGE;
	tvi.item.stateMask = TVIS_STATEIMAGEMASK;

	NudgeElementList *n;
	int i = 0;
	if (GlobalNudge.useByProtocol)
	{
		#ifdef _UNICODE
		wchar_t buff[256];
		#endif
		for(n = NudgeList;n != NULL; n = n->next)
		{
			#ifdef _UNICODE
				MultiByteToWideChar(CP_ACP, 0, n->item.ProtocolName, -1, buff, 256);
				tvi.item.pszText = buff;
			#else
				tvi.item.pszText = n->item.ProtocolName;
			#endif
			tvi.item.iImage  = i;
			n->item.iProtoNumber = i;
			tvi.item.iSelectedImage = i;
			tvi.item.state = INDEXTOSTATEIMAGEMASK(n->item.enabled?2:1);	
			TreeView_InsertItem(hLstView, &tvi);
			i++;
		}
	}
	else
	{
		tvi.item.pszText = TranslateT("Nudge");
		tvi.item.iImage  = nProtocol;
		DefaultNudge.iProtoNumber = nProtocol;
		tvi.item.iSelectedImage = nProtocol;
		tvi.item.state = INDEXTOSTATEIMAGEMASK(DefaultNudge.enabled?2:1);	
		TreeView_InsertItem(hLstView, &tvi);

	}
	TreeView_SelectItem(hLstView, TreeView_GetRoot(hLstView));
	//TreeView_SetCheckState(hLstView, TreeView_GetRoot(hLstView), TRUE)
}
Beispiel #22
0
VOID
CDeviceView::EmptyDeviceView()
{
    HTREEITEM hItem;

    /* Check if there are any items in the tree */
    hItem = TreeView_GetRoot(m_hTreeView);
    if (hItem == NULL) return;

    /* Free all the Device Ids */
    RecurseDeviceView(hItem);

    /* Delete all the items */
    (VOID)TreeView_DeleteAllItems(m_hTreeView);
}
Beispiel #23
0
void UpdateFavoritesTree(WindowInfo* win) {
    HWND hwndTree = win->hwndFavTree;

    if (TreeView_GetCount(hwndTree) > 0) {
        // PopulateFavTreeIfNeeded will re-enable WM_SETREDRAW
        SendMessage(hwndTree, WM_SETREDRAW, FALSE, 0);
        TreeView_DeleteAllItems(hwndTree);
        PopulateFavTreeIfNeeded(win);
    }

    // hide the favorites tree if we've removed the last favorite
    if (0 == TreeView_GetCount(hwndTree)) {
        SetSidebarVisibility(win, win->tocVisible, false);
    }
}
Beispiel #24
0
/*
* MainWindowOnRefresh
*
* Purpose:
*
* Main Window Refresh handler.
*
*/
VOID MainWindowOnRefresh(
	_In_ HWND hwnd
	)
{
	LPWSTR	CurrentObject;
	SIZE_T	len;

	UNREFERENCED_PARAMETER(hwnd);

	supSetWaitCursor(TRUE);

	if (g_kdctx.hDevice != NULL) {
		ObListDestroy(&g_kdctx.ObjectList);
		if (g_kdctx.hThreadWorker) {
			WaitForSingleObject(g_kdctx.hThreadWorker, INFINITE);
			CloseHandle(g_kdctx.hThreadWorker);
			g_kdctx.hThreadWorker = NULL;
		}

		//query object list info
		g_kdctx.hThreadWorker = CreateThread(NULL, 0,
			kdQueryProc,
			&g_kdctx, 0, NULL);
	}

	supFreeSCMSnapshot(g_enumParams.scmSnapshot);
	sapiFreeSnapshot(g_enumParams.sapiDB);
	RtlSecureZeroMemory(&g_enumParams, sizeof(g_enumParams));
	g_enumParams.scmSnapshot = supCreateSCMSnapshot(&g_enumParams.scmNumberOfEntries);
	g_enumParams.sapiDB = sapiCreateSetupDBSnapshot();
	g_enumParams.lpSubDirName = CurrentObjectPath;

	len = _strlen(CurrentObjectPath);
	CurrentObject = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (len + 1)*sizeof(WCHAR));
	if (CurrentObject)
		_strcpy(CurrentObject, CurrentObjectPath);

	TreeView_DeleteAllItems(ObjectTree);
	ListObjectDirectoryTree(L"\\", NULL, NULL);
	TreeView_SelectItem(ObjectTree, TreeView_GetRoot(ObjectTree));

	if (CurrentObject) {
		ListToObject(CurrentObject);
		HeapFree(GetProcessHeap(), 0, CurrentObject);
	}

	supSetWaitCursor(FALSE);
}
Beispiel #25
0
/*
** Updates metadata and settings when changed.
**
*/
void CDialogManage::CTabSkins::Update(CMeterWindow* meterWindow, bool deleted)
{
	if (meterWindow)
	{
		if (!deleted && m_IgnoreUpdate)
		{
			// Changed setting from dialog, no need to update
			m_IgnoreUpdate = false;
		}
		else if (m_SkinWindow && m_SkinWindow == meterWindow) 
		{
			// Update from currently open skin
			m_HandleCommands = false;
			if (deleted)
			{
				DisableControls();
				m_SkinWindow = NULL;
			}
			else
			{
				SetControls();
			}
			m_HandleCommands = true;
		}
		else if (wcscmp(meterWindow->GetFolderPath().c_str(), m_SkinFolderPath.c_str()) == 0 &&
				 wcscmp(meterWindow->GetFileName().c_str(), m_SkinFileName.c_str()) == 0)
		{
			ReadSkin();
		}
	}
	else
	{
		// Populate tree
		HWND item = GetDlgItem(m_Window, IDC_MANAGESKINS_SKINS_TREEVIEW);
		TreeView_DeleteAllItems(item);

		TVINSERTSTRUCT tvi = {0};
		tvi.hInsertAfter = TVI_LAST;
		tvi.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		tvi.item.iImage = tvi.item.iSelectedImage = 0;

		if (!Rainmeter->m_SkinFolders.empty())
		{
			PopulateTree(item, tvi);
		}
	}
}
Beispiel #26
0
/*
* MainWindowOnRefresh
*
* Purpose:
*
* Main Window Refresh handler.
*
*/
VOID MainWindowOnRefresh(
    _In_ HWND hwnd
)
{
    LPWSTR  CurrentPath = NULL;
    SIZE_T  len;

    UNREFERENCED_PARAMETER(hwnd);

    supSetWaitCursor(TRUE);

    if (g_kdctx.hDevice != NULL) {
        ObListDestroy(&g_kdctx.ObjectList);
        if (g_kdctx.hThreadWorker) {
            WaitForSingleObject(g_kdctx.hThreadWorker, INFINITE);
            CloseHandle(g_kdctx.hThreadWorker);
            g_kdctx.hThreadWorker = NULL;
        }

        //query object list info
        g_kdctx.hThreadWorker = CreateThread(NULL, 0,
            kdQueryProc,
            &g_kdctx, 0, NULL);
    }

    supFreeSCMSnapshot();
    sapiFreeSnapshot();

    supCreateSCMSnapshot();
    sapiCreateSetupDBSnapshot();

    len = _strlen(g_WinObj.CurrentObjectPath);
    CurrentPath = supHeapAlloc((len + 1) * sizeof(WCHAR));
    if (CurrentPath)
        _strcpy(CurrentPath, g_WinObj.CurrentObjectPath);

    TreeView_DeleteAllItems(g_hwndObjectTree);
    ListObjectDirectoryTree(L"\\", NULL, NULL);
    TreeView_SelectItem(g_hwndObjectTree, TreeView_GetRoot(g_hwndObjectTree));

    if (CurrentPath) {
        ListToObject(CurrentPath);
        supHeapFree(CurrentPath);
    }

    supSetWaitCursor(FALSE);
}
Beispiel #27
0
static int BuildTree(HWND hwndDlg)
{
	HWND hTree = GetDlgItem(hwndDlg, IDC_BUTTONORDERTREE);
	OrderData *dat = (OrderData*)GetWindowLongPtr(hTree, GWLP_USERDATA);

	dat->himlButtonIcons = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR32 | ILC_MASK, 2, 2);
	TreeView_SetImageList(hTree, dat->himlButtonIcons, TVSIL_NORMAL);
	SetWindowLongPtr(hTree, GWL_STYLE, GetWindowLongPtr(hTree,GWL_STYLE)|TVS_NOHSCROLL);
	TreeView_DeleteAllItems(hTree);

	if (Buttons.getCount() == 0)
		return FALSE;

	for (int i = 0; i < Buttons.getCount(); i++)
		AddLine(hTree, Buttons[i], TVI_LAST, dat->himlButtonIcons);
	return TRUE;
}
Beispiel #28
0
/*
Delete all items from the tree and creates the root node
*/
HTREEITEM JSONDialog::initTree(HWND hWndDlg)
{

	int TreeCount=TreeView_GetCount(GetDlgItem(this->getHSelf(),IDC_TREE));
	if(TreeCount>0)
		TreeView_DeleteAllItems(GetDlgItem(this->getHSelf(),IDC_TREE));

	TV_INSERTSTRUCT tvinsert;    

	tvinsert.hParent=NULL;     
	tvinsert.hInsertAfter=TVI_ROOT;
	tvinsert.item.mask=TVIF_TEXT;

	tvinsert.item.pszText=L"JSON";
	HTREEITEM item=(HTREEITEM)SendDlgItemMessage(hWndDlg,IDC_TREE,TVM_INSERTITEM,0,(LPARAM)&tvinsert);

	return item;		
}
Beispiel #29
0
// Function to add files & Folders to TreeView Control //
wyBool 
FavoriteBase::InitTreeView(HWND  handle, wyBool isfile)
{	
	HTREEITEM   root = 0;			// Root node handle //

    if(TreeView_DeleteAllItems(handle) == wyFalse)
        return wyFalse;     
	
    root = AddItem(handle, TVI_ROOT, "Favorites", 1);
	AddToTreeView(handle, root, isfile);

    if(TreeView_Select(handle, TreeView_GetRoot(handle), TVGN_CARET) == wyFalse )
        return wyFalse;

	::SendMessage(handle, TVM_EXPAND, (WPARAM)TVE_EXPAND, (LPARAM )root);
	
	return wyTrue;
}
Beispiel #30
0
static void ModernOptUI_SelectSection(HWND hwndDlg, struct ModernOptionsData *dat, int iSection)
{
	int iPageType = -1;

	HWND hwndTree = GetDlgItem(hwndDlg, IDC_TV_SUBSECTIONS);
	dat->iSection = iSection;

	SendMessage(hwndTree, WM_SETREDRAW, FALSE, 0);
	TreeView_DeleteAllItems(hwndTree);
	for (int i = 0; i < dat->pObjectList.getCount(); ++i) {
		struct ModernOptionsObject *obj = (struct ModernOptionsObject *)dat->pObjectList[i];
		if (obj->optObject.iSection != iSection) continue;

		if ((iPageType < -1) && (iPageType != obj->optObject.iType)) continue;
		iPageType = obj->optObject.iType;

		if (obj->optObject.iType == MODERNOPT_TYPE_SECTIONPAGE) {
			ModernOptUI_ShowPage(hwndDlg, dat, i);
			break;
		}

		if (obj->optObject.iType == MODERNOPT_TYPE_SUBSECTIONPAGE) {
			TVINSERTSTRUCT tvis = {0};
			tvis.hParent = TVI_ROOT;
			tvis.hInsertAfter = TVI_LAST;
			tvis.item.mask = TVIF_IMAGE|TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM;
			tvis.item.pszText = TranslateTS(obj->optObject.lptzSubsection);
			tvis.item.iImage = tvis.item.iSelectedImage = obj->iTreeImageIndex;
			tvis.item.lParam = i;
			TreeView_InsertItem(hwndTree, &tvis);
	}	}

	SendMessage(hwndTree, WM_SETREDRAW, TRUE, 0);

	if (iPageType < 0)
		return;

	if (iPageType != MODERNOPT_TYPE_SECTIONPAGE) {
		ShowWindow(hwndTree, SW_SHOW);
		RedrawWindow(hwndTree, NULL, NULL, RDW_INVALIDATE);
		TreeView_Select(hwndTree, TreeView_GetRoot(hwndTree), TVGN_CARET);
	}
	else ShowWindow(hwndTree, SW_HIDE);
}