⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xhtmltreetestdlg.cpp

📁 读取XML信息
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		{
			if (m_bLog)
				m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
					_T("%04d  item expanded/collapsed at '%s'"), m_nLineNo++,
					m_Tree.GetItemText(hItem));
			DumpInfo(hItem);
		}
	}
	return 0;
}

//=============================================================================
// OnCheckbox
//
// This function shows how to handle WM_XHTMLTREE_CHECKBOX_CLICKED messages 
// from XHtmlTree.
//
LRESULT CXHtmlTreeTestDlg::OnCheckbox(WPARAM wParam, LPARAM lParam)
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnCheckbox\n"));

	XHTMLTREEMSGDATA *pData = (XHTMLTREEMSGDATA *)wParam;
	ASSERT(pData);

	BOOL bChecked = lParam;

	if (pData)
	{
		HTREEITEM hItem = pData->hItem;

		if (hItem)
		{
			if (m_bLog)
				m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
					_T("%04d  checkbox %schecked at '%s'"), m_nLineNo++,
					bChecked ? _T("") : _T("un"),
					m_Tree.GetItemText(hItem));

			DumpInfo(hItem);

			UINT uState = m_Tree.GetItemState(hItem, TVIS_STATEIMAGEMASK);
			uState = uState >> 12;
			int nStateImage = m_Tree.GetStateImage(hItem);
			TRACE(_T("bChecked=%d  uState=%X  nStateImage=%d\n"), bChecked, uState, nStateImage);

			if (m_pCheckedItemsDlg)
				OnShowChecked();
		}
	}

	return 0;
}

//=============================================================================
void CXHtmlTreeTestDlg::DumpInfo(HTREEITEM hItem)
//=============================================================================
{
	CString str = _T("");
	if (hItem)
	{
		str = m_Tree.GetItemText(hItem);
		TRACE(_T("DumpInfo:  0x%X  <%s>.....\n"), hItem, str);
		str.Format(_T("   bChecked=%d nChildren=%d nChecked=%d bExpanded=%d bHasBeenExpanded=%d nDisabled=%d"),
			m_Tree.GetCheck(hItem), m_Tree.GetChildrenCount(hItem), 
			m_Tree.GetChildrenCheckedCount(hItem),
			m_Tree.IsExpanded(hItem),
			m_Tree.GetHasBeenExpanded(hItem),
			m_Tree.GetChildrenDisabledCount(hItem));
		if (m_bLog)
			m_List.Printf(CXListBox::Black, CXListBox::White, 0, 
					_T("%04d  %s"), m_nLineNo++, str);
		TRACE(_T("DumpInfo:  %s  GetCheck()=%d  GetEnable()=%d\n"), 
			str, m_Tree.GetCheck(hItem), m_Tree.IsEnabled(hItem));

		TCHAR s[100];
		_stprintf(s, _T("Item Info - 0x%X"), hItem);
		if (m_Tree.IsSeparator(hItem))					//+++1.6
			_tcscat(s, _T("  (Separator)"));
		m_ItemInfo.SetWindowText(s);

		int nImage, nSelImage;
		m_Tree.GetItemImage(hItem, nImage, nSelImage);
		_itot(nImage, s, 10);
		if (nImage == TV_NOIMAGE)
			_tcscpy(s, _T("TV_NOIMAGE"));
		m_ItemImage.SetWindowText(s);

		m_IsChecked.SetWindowText(m_Tree.GetCheck(hItem) ? _T("TRUE") : _T("FALSE"));
		m_NoChecked.SetWindowText(_itot(m_Tree.GetChildrenCheckedCount(hItem), s, 10));
		m_NoChildren.SetWindowText(_itot(m_Tree.GetChildrenCount(hItem), s, 10));
		m_NoSeparators.SetWindowText(_itot(m_Tree.GetSeparatorCount(hItem), s, 10));

		m_Expanded.SetWindowText(m_Tree.IsExpanded(hItem) ? _T("Yes") : _T("No"));
	}

	HTREEITEM hRoot = m_Tree.GetRootItem();
	if (hRoot)
	{
		int nTotalChildren = m_Tree.GetChildrenCount(hRoot);
		int nTotalCheckedChildren = m_Tree.GetChildrenCheckedCount(hRoot);
		TRACE(_T("nTotalChildren=%d  nTotalCheckedChildren=%d\n"), nTotalChildren, nTotalCheckedChildren);
		str.Format(_T("Tree contains %d children, %d %s checked."),
				nTotalChildren, 
				nTotalCheckedChildren,
				(nTotalCheckedChildren == 1) ? _T("is") : _T("are"));
		m_TreeInfo.SetWindowText(str);
	}
}

//=============================================================================
// OnAppCommand will be called when user clicks on "American Staghound" link
//    wParam = parameter #3 from XHTMLTREE_APP_COMMAND
//    lParam = HTREEITEM of item
LRESULT CXHtmlTreeTestDlg::OnAppCommand1(WPARAM wParam, LPARAM lParam)
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnAppCommand1:  wParam=%d  lParam=%X\n"), wParam, lParam);

	TCHAR plaintext[1000];

	CXHtmlDraw hd;
	hd.GetPlainText(m_Tree.GetItemText((HTREEITEM)lParam), 
		plaintext, sizeof(plaintext)/sizeof(TCHAR)-1);

	if (m_bLog)
		m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
			_T("%04d  app command 1:  '%s'   wParam = %u   lParam = %X"), 
			m_nLineNo++, plaintext, wParam, lParam);

	CString s;
	s.Format(_T("got WM_APP_COMMAND_1 for '%s'\n\nwParam = %u   lParam = %X"),
		plaintext, wParam, lParam);

	::PlaySound(_T("woofwoof"), AfxGetApp()->m_hInstance,
				SND_RESOURCE|SND_ASYNC|SND_NOWAIT|SND_NODEFAULT);

	XMessageBox(m_hWnd, s, _T("XHtmlTreeTest"),
				MB_OK | MB_ICONINFORMATION | MB_NOSOUND);

	return 0;
}

//=============================================================================
// OnAppCommand2 will be called when user clicks on "Greyhound" link
//    wParam = parameter #3 from XHTMLTREE_APP_COMMAND
//    lParam = HTREEITEM of item
LRESULT CXHtmlTreeTestDlg::OnAppCommand2(WPARAM wParam, LPARAM lParam)
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnAppCommand2:  wParam=%d  lParam=%X\n"), wParam, lParam);

	TCHAR plaintext[1000];

	CXHtmlDraw hd;
	hd.GetPlainText(m_Tree.GetItemText((HTREEITEM)lParam), 
		plaintext, sizeof(plaintext)/sizeof(TCHAR)-1);

	if (m_bLog)
		m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
			_T("%04d  app command 2:  '%s'   wParam = %u   lParam = %X"), 
			m_nLineNo++, plaintext, wParam, lParam);

	CString s;
	s.Format(_T("got WM_APP_COMMAND_2 for '%s'\n\nwParam = %u   lParam = %X"),
		plaintext, wParam, lParam);

	XMessageBox(m_hWnd, s, _T("XHtmlTreeTest"),
				MB_OK | MB_ICONINFORMATION | MB_NOSOUND);

	return 0;
}

//=============================================================================
void CXHtmlTreeTestDlg::OnChangeEdit1() 
//=============================================================================
{
	GetDlgItem(IDC_UPDATE)->EnableWindow(TRUE);
}

//=============================================================================
void CXHtmlTreeTestDlg::OnCollapseAll() 
//=============================================================================
{
	if (m_bLog)
		m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
				_T("%04d  Collapsing all items"), m_nLineNo++);

	m_Tree.CollapseAll();
	m_Tree.SetFocus();
}

//=============================================================================
void CXHtmlTreeTestDlg::OnExpandAll() 
//=============================================================================
{
	if (m_bLog)
		m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
				_T("%04d  Expanding all items"), m_nLineNo++);

	m_Tree.ExpandAll();
	m_Tree.SetFocus();
}

//=============================================================================
void CXHtmlTreeTestDlg::OnCheckAll() 
//=============================================================================
{
	if (m_bLog)
		m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
				_T("%04d  Toggling checkbox for all items"), m_nLineNo++);

	m_Tree.CheckAll(m_bCheckAll);
	m_bCheckAll = !m_bCheckAll;
	m_Tree.SetFocus();
}

//=============================================================================
void CXHtmlTreeTestDlg::OnUpdateTree() 
//=============================================================================
{
	UpdateTree(TRUE);
	m_Tree.SetFocus();
}

//=============================================================================
void CXHtmlTreeTestDlg::UpdateTree(BOOL bReInit) 
//=============================================================================
{
	UpdateData(TRUE);
	if (bReInit)
		if (m_bLog)
			m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
				_T("%04d  Reinitializing tree"), m_nLineNo++);

	m_ItemImage.SetWindowText(_T(""));
	m_IsChecked.SetWindowText(_T(""));
	m_NoChecked.SetWindowText(_T(""));
	m_NoChildren.SetWindowText(_T(""));
	m_Expanded.SetWindowText(_T(""));
	m_TreeInfo.SetWindowText(_T(""));

	UpdateData(TRUE);

	m_Tree.Initialize(m_bCheckBoxes, TRUE)
		  .SetSmartCheckBox(m_bSmartCheckBoxes)
		  .SetHtml(m_bHtml)
		  .SetStripHtml(m_bStripHtml)
		  .SetImages(m_bImages)
		  .SetReadOnly(m_bReadOnly)
		  .SetDragOps(XHTMLTREE_DO_DEFAULT)
		  //.SetSeparatorColor(RGB(0,0,255))
		  .SetDropCursors(IDC_NODROP, IDC_DROPCOPY, IDC_DROPMOVE);

	//m_Tree.SetInsertMarkColor(RGB(255,0,0));

	TRACE(_T("setting image list\n"));
	if (m_bImages)
		m_Tree.SetImageList(&m_Images, TVSIL_NORMAL);
	else
		m_Tree.SetImageList(NULL, TVSIL_NORMAL);

	m_Tree.SetTextColor(m_rgbText);

	if (m_bReadOnly)
		m_Tree.SetBkColor(m_Tree.GetDisabledColor(GetSysColor(COLOR_WINDOW)));
	else
		m_Tree.SetBkColor(m_rgbBackground);

	if (m_nInput == 0)
		LoadTextFileFromResource(_T("IDU_DOGS1"));
	else if (m_nInput == 1)
		LoadTextFileFromResource(_T("IDU_DOGS2"));
	else if (m_nInput == 2)
		LoadXmlFileFromResource(_T("IDU_DOGS3"));
	else if (m_nInput == 3)
		LoadXmlFileFromResource(_T("IDU_DOGS4"));
	else if (m_nInput == 4)
	{
		//+++1.6   multiple roots
		LoadTextFileFromResource(_T("IDU_DOGS2"), 1);
		LoadTextFileFromResource(_T("IDU_DOGS2"), 2);
		LoadTextFileFromResource(_T("IDU_DOGS2"), 3);
		LoadTextFileFromResource(_T("IDU_DOGS2"), 4);
		LoadTextFileFromResource(_T("IDU_DOGS2"), 5);
	}

	if (m_bLog)
		m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
			_T("%04d  %d items loaded from resource '%s'"), 
			m_nLineNo++, m_nCount, m_strResourceName);

	CString strTitle;
	strTitle.LoadString(AFX_IDS_APP_TITLE);
	strTitle += _T(" - ");
	strTitle += m_strResourceName;
	SetWindowText(strTitle);
}

//=============================================================================
void CXHtmlTreeTestDlg::OnShowChecked() 
//=============================================================================
{
	if ((m_pCheckedItemsDlg == NULL) ||
		(!::IsWindow(m_pCheckedItemsDlg->m_hWnd)))
	{
		m_pCheckedItemsDlg = new CCheckedItemsDialog(this, m_ptCheckedItems);
	}

	int nChecked = 0;
	CString str = _T("");

	HTREEITEM hItem = m_Tree.GetFirstCheckedItem();
	while (hItem)
	{
		CString s;
		s.Format(_T("0x%08X   "), hItem);
		CString strText = m_Tree.GetItemText(hItem, TRUE);
		if (!str.IsEmpty())
			str += _T("\r\n");
		str += s;
		str += strText;
		nChecked++;

		hItem = m_Tree.GetNextCheckedItem(hItem);
	}

	if (nChecked == 0)
	{
		str = _T("No checked items at this time.");
	}

	if (m_pCheckedItemsDlg)
		m_pCheckedItemsDlg->SetText(str);

	m_Tree.SetFocus();
}

//=============================================================================
// OnInitTreeToolTip
//
// This message is received when tooltip is being initialized.
//=============================================================================
#ifdef XHTMLTOOLTIPS
LRESULT CXHtmlTreeTestDlg::OnInitTreeToolTip(WPARAM, LPARAM lParam)
#else
LRESULT CXHtmlTreeTestDlg::OnInitTreeToolTip(WPARAM, LPARAM)
#endif
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnInitTreeToolTip\n"));

#ifdef XHTMLTOOLTIPS

	CPPToolTip * pToolTip = (CPPToolTip *) lParam;

	if (pToolTip && IsWindow(pToolTip->m_hWnd))
	{
		pToolTip->SetColorBk(RGB(255, 255, 255), RGB(240, 247, 255), RGB(192, 192, 208));
		pToolTip->SetEffectBk(13, 5);
		pToolTip->SetDelayTime(PPTOOLTIP_TIME_AUTOPOP, 8000);
	}

#endif

	return 0;
}

//=============================================================================
// OnDisplayTreeToolTip
//
// This message is received when tooltip is about to be displayed.  
// Return FALSE to allow the display, TRUE to prevent it.
//=============================================================================
#ifdef XHTMLTOOLTIPS
LRESULT CXHtmlTreeTestDlg::OnDisplayTreeToolTip(WPARAM wParam, LPARAM lParam)
#else
LRESULT CXHtmlTreeTestDlg::OnDisplayTreeToolTip(WPARAM wParam, LPARAM)
#endif
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnDisplayTreeToolTip\n"));

	LRESULT lResult = 0;

	XHTMLTREEMSGDATA *pData = (XHTMLTREEMSGDATA *)wParam;
	ASSERT(pData);

	HTREEITEM hItem = pData->hItem;

#ifdef XHTMLTOOLTIPS

	CPPToolTip * pToolTip = (CPPToolTip *) lParam;

	if (hItem && pToolTip && IsWindow(pToolTip->m_hWnd))
	{
		// do custom stuff here
	}
	else
	{
		lResult = 1;	// don't display
	}

#endif

	CString strText = m_Tree.GetItemText(hItem);
	TRACE(_T("hItem=%X  strText=<%s>\n"), hItem, strText);

	if (_tcsncmp(strText, _T("Galgo"), 5) == 0)
	{
		// zero tip width will use default width
		m_Tree.SetItemNote(hItem, 
			_T("This is alternate text. For standard tooltip, it is limited to 80 characters."),
			0);
	}

	return lResult;
}

//=============================================================================
// OnCheckedItemsDialogClosing
//
//  This message is received when the checked items dialog closes.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -