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

📄 xhtmltreetestdlg.cpp

📁 读取XML信息
💻 CPP
📖 第 1 页 / 共 4 页
字号:
//
LRESULT CXHtmlTreeTestDlg::OnCheckedItemsDialogClosing(WPARAM, LPARAM lParam)
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnCheckedItemsDialogClosing\n"));
	m_ptCheckedItems.x = GET_X_LPARAM(lParam);
	m_ptCheckedItems.y = GET_Y_LPARAM(lParam);
	TRACEPOINT(m_ptCheckedItems);
	m_pCheckedItemsDlg = NULL;
	return 0;
}

//=============================================================================
void CXHtmlTreeTestDlg::OnFind() 
//=============================================================================
{
	SetFocus();
	CFindDialog dlg;
	dlg.m_strFind = m_strFind;
	dlg.m_nFindStart = m_nFindStart;
	dlg.m_nFindDir = m_nFindDir;
	dlg.m_bCheck = m_bFindCheck;
	dlg.m_rect = m_rectFind;

	int rc = dlg.DoModal();
	m_strFind = dlg.m_strFind;
	m_nFindStart = dlg.m_nFindStart;
	m_nFindDir = dlg.m_nFindDir;
	m_bFindCheck = dlg.m_bCheck;
	m_rectFind = dlg.m_rect;

	if (rc == IDOK)
	{
		Find();
	}
	m_Tree.SetFocus();
}

//=============================================================================
void CXHtmlTreeTestDlg::FindNext() 
//=============================================================================
{
	m_nFindDir = 1;
	Find();
}

//=============================================================================
void CXHtmlTreeTestDlg::FindPrev() 
//=============================================================================
{
	m_nFindDir = 0;
	Find();
}

//=============================================================================
void CXHtmlTreeTestDlg::Find() 
//=============================================================================
{
	if (!m_strFind.IsEmpty())
	{
		HTREEITEM hItem = m_Tree.GetSelectedItem();
		if ((hItem == NULL) || (m_nFindStart == 1) || m_bFindCheck)
			hItem = m_Tree.GetRootItem();
		if (hItem)
		{
			BOOL bContinue = TRUE;
			while (bContinue)
			{
				HTREEITEM hItemFound = m_Tree.FindItem(m_strFind, FALSE, 
											m_nFindDir == 1, FALSE, !m_bFindCheck, hItem);
				TRACE(_T("hItemFound=%X\n"), hItemFound);
				if (hItemFound)
				{
					if (m_bFindCheck)
					{
						if ((m_bSmartCheckBoxes && !m_Tree.ItemHasChildren(hItemFound)) ||
							!m_bSmartCheckBoxes)
						{
							m_Tree.SetCheck(hItemFound);
						}
						hItem = hItemFound;
					}
					else
					{
						m_Tree.SelectItem(hItemFound);
						bContinue = FALSE;
					}
				}
				else
				{
					if (!m_bFindCheck)
					{
						CString s;
						s.Format(_T("Cannot find string '%s'"), m_strFind);
						XMessageBox(m_hWnd, s, _T("XHtmlTreeTest"),
									MB_OK | MB_ICONEXCLAMATION | MB_NOSOUND);
					}
					bContinue = FALSE;
				}
			}

			if (m_bFindCheck)
				if (m_bLog)
					m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
						_T("%04d  %d items checked after search for '%s'"), 
						m_nLineNo++, m_Tree.GetCheckedCount(), m_strFind);
		}
	}
}

//=============================================================================
BOOL CXHtmlTreeTestDlg::PreTranslateMessage(MSG* pMsg) 
//=============================================================================
{
	if ((pMsg->hwnd == 0) || !IsWindow(pMsg->hwnd))
		return TRUE;

	m_ToolTips.RelayEvent(pMsg);
	TranslateAccelerator(m_hWnd, m_hAccel, pMsg);
	if ((pMsg->hwnd == 0) || !IsWindow(pMsg->hwnd))
		return TRUE;
	return CDialog::PreTranslateMessage(pMsg);
}

//=============================================================================
void CXHtmlTreeTestDlg::OnColors() 
//=============================================================================
{
	CColorDlg dlg;
	dlg.m_rgbText = m_rgbText;
	dlg.m_rgbBackground = m_rgbBackground;
	if (dlg.DoModal() == IDOK)
	{
		m_rgbText = dlg.m_rgbText;
		m_rgbBackground = dlg.m_rgbBackground;
		m_Tree.SetTextColor(m_rgbText);
		m_Tree.SetBkColor(m_rgbBackground);
		m_Tree.RedrawWindow();
	}
}

//=============================================================================
void CXHtmlTreeTestDlg::OnClose() 
//=============================================================================
{
	CDialog::OnCancel();
}

//=============================================================================
void CXHtmlTreeTestDlg::OnCancel() 
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnCancel\n"));
	// override the base class OnCancel() --
	// prevent the ESC key from cancelling the dialog
	//CDialog::OnCancel();
}

//=============================================================================
void CXHtmlTreeTestDlg::OnBeginlabeleditTree1(NMHDR* /*pNMHDR*/, LRESULT* pResult) 
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnBeginlabeleditTree1\n"));
	//TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;

	if (m_bLog)
		m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
			_T("%04d  received TVN_BEGINLABELEDIT"), 
			m_nLineNo++);

	*pResult = FALSE;			// return FALSE to allow edit
}

//=============================================================================
void CXHtmlTreeTestDlg::OnEndlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult) 
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnEndlabeleditTree1\n"));
	
	*pResult = TRUE;			// return TRUE to accept edit

	NMTVDISPINFO* pTVDispInfo = (NMTVDISPINFO*) pNMHDR;
	HTREEITEM hItem = pTVDispInfo->item.hItem;
	ASSERT(hItem);

	LPTSTR pszText = pTVDispInfo->item.pszText;

	BOOL bComplete = pszText && (*pszText != _T('\0'));
	if (!bComplete)
		*pResult = FALSE;		// don't allow empty label

	if (m_bLog)
		m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
			_T("%04d  received TVN_ENDLABELEDIT: edit %s"), 
			m_nLineNo++, bComplete ? _T("complete") : _T("canceled"));

	if (pszText && (*pszText != _T('\0')))
		m_Edit.SetWindowText(pszText);

	SetTimer(1, 50, NULL);	// set timer to update bread crumb bar - the item
							// text has not yet been updated in the tree

}

//=============================================================================
void CXHtmlTreeTestDlg::OnLog() 
//=============================================================================
{
	m_bLog = !m_bLog;
	UpdateData(FALSE);
}

//=============================================================================
LRESULT CXHtmlTreeTestDlg::OnAppCommandSel(WPARAM wParam, LPARAM)
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnAppCommandSel: wParam=%X\n"), wParam);

	if  (wParam)
	{
		m_Tree.SelectItem((HTREEITEM)wParam);		
	}

	return 0;
}

//=============================================================================
void CXHtmlTreeTestDlg::OnMouseMove(UINT nFlags, CPoint point) 
//=============================================================================
{
	m_BreadCrumbBar.RelayMouseMove(m_hWnd);
	CDialog::OnMouseMove(nFlags, point);
}

//=============================================================================
void CXHtmlTreeTestDlg::OnLButtonUp(UINT nFlags, CPoint point) 
//=============================================================================
{
	m_BreadCrumbBar.RelayClick(m_hWnd);
	CDialog::OnLButtonUp(nFlags, point);
}

//=============================================================================
void CXHtmlTreeTestDlg::OnTimer(UINT nIDEvent) 
//=============================================================================
{
	KillTimer(nIDEvent);
	SetBreadCrumbBar(NULL);
	CDialog::OnTimer(nIDEvent);
}

#ifdef XHTMLDRAGDROP

//=============================================================================
LRESULT CXHtmlTreeTestDlg::OnBeginDrag(WPARAM wParam, LPARAM lParam)
//
// Message handler for WM_XHTMLTREE_BEGIN_DRAG:
//    wParam = pointer to XHTMLTREEMSGDATA struct
//    lParam = pointer to XHTMLTREEDRAGMSGDATA struct
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnBeginDrag\n"));

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

	XHTMLTREEDRAGMSGDATA *pData = (XHTMLTREEDRAGMSGDATA *) lParam;

	LRESULT lResult = 0;

	if (pMsg && pData)
	{
		CString strCopyMove = _T("move");
		if (pData->bCopyDrag)
			strCopyMove = _T("copy");
		CString strItem = m_Tree.GetItemText(pData->hItem);
		TRACE(_T("starting %s drag on '%s'\n"), strCopyMove, strItem);

		if (strItem == _T("Longdog"))
			lResult = 1;

		if (m_bLog && (lResult == 0))
			m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
				_T("%04d  starting %s drag on '%s'"), 
				m_nLineNo++, strCopyMove, strItem);
		else if (m_bLog && (lResult == 1))
			m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
				_T("%04d  rejecting drag of '%s'"), 
				m_nLineNo++, strItem);
	}
	else
	{
		TRACE(_T("ERROR bad param\n"));
		ASSERT(FALSE);
	}

	return lResult;	// return 0 to allow drag
}

//=============================================================================
LRESULT CXHtmlTreeTestDlg::OnEndDrag(WPARAM wParam, LPARAM lParam)
//
// Message handler for WM_XHTMLTREE_END_DRAG:
//    wParam = pointer to XHTMLTREEMSGDATA struct
//    lParam = pointer to XHTMLTREEDRAGMSGDATA struct; 0 = drag terminated
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnEndDrag\n"));

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

	XHTMLTREEDRAGMSGDATA *pData = (XHTMLTREEDRAGMSGDATA *) lParam;

	LRESULT lResult = 0;

	if (pMsg)
	{
		if (pData)
		{
			CString strItem = m_Tree.GetItemText(pData->hItem);
			CString strDropTarget = _T("");

			if (((UINT_PTR)pData->hAfter & 0xFFFF0000) == 0xFFFF0000)
				strDropTarget = m_Tree.GetItemText(pData->hNewParent);
				//strTextAfter.Format(_T("0x%X"), hAfter);
			else if (pData->hAfter)
				strDropTarget = m_Tree.GetItemText(pData->hAfter);

			TRACE(_T("ending drag:  dropping '%s' on '%s'\n"), strItem, strDropTarget);

			if (strDropTarget == _T("Longdog"))
				lResult = 1;

			if (m_bLog && (lResult == 0))
				m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
					_T("%04d  ending drag:  dropping '%s' on '%s'"), 
					m_nLineNo++, strItem, strDropTarget);
			else if (m_bLog && (lResult == 1))
				m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
					_T("%04d  ending drag:  rejecting drop of '%s' on '%s'"), 
					m_nLineNo++, strItem, strDropTarget);

			DumpInfo(m_Tree.GetSelectedItem());
		}
		else
		{
			// lParam = 0 ==> drag was terminated by user (left button up
			// when not on item, ESC key, right mouse button down)
			if (m_bLog)
				m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
					_T("%04d  drag terminated by user"), m_nLineNo++);
		}
	}

	return lResult;	// return 0 to allow drop
}

//=============================================================================
LRESULT CXHtmlTreeTestDlg::OnDropHover(WPARAM wParam, LPARAM lParam)
//
// Message handler for WM_XHTMLTREE_DROP_HOVER:
//    wParam = pointer to XHTMLTREEMSGDATA struct
//    lParam = pointer to XHTMLTREEDRAGMSGDATA struct
//=============================================================================
{
	TRACE(_T("in CXHtmlTreeTestDlg::OnDropHover\n"));

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

	XHTMLTREEDRAGMSGDATA *pData = (XHTMLTREEDRAGMSGDATA *) lParam;

	LRESULT lResult = 0;

	if (pMsg && pData)
	{
		CString strItem = m_Tree.GetItemText(pData->hItem);
		CString strTextHover = m_Tree.GetItemText(pData->hAfter);
		TRACE(_T("dragging '%s' over '%s'\n"), strItem, strTextHover);

		if (strTextHover == _T("Longdog"))
			lResult = 1;
	
#if 0  // -----------------------------------------------------------
		if (m_bLog)
			m_List.Printf(CXListBox::Blue, CXListBox::White, 0, 
				_T("%04d  dragging '%s' over '%s'"), 
				m_nLineNo++, strItem, strTextHover);
#endif // -----------------------------------------------------------
	}
	else
	{
		TRACE(_T("ERROR bad param\n"));
		ASSERT(FALSE);
	}

	return lResult;
}

//=============================================================================
LRESULT CXHtmlTreeTestDlg::OnScrollSpeed(WPARAM wParam, LPARAM)
//=============================================================================
{
	CXNamedColors nc(_T("BtnFace"));

	COLORREF rgbOn  = RGB(0,255,0);
	COLORREF rgbOff = nc.GetRGB();

	m_ScrollSpeed1.SetBackgroundColor((wParam >= 1) ? rgbOn : rgbOff);
	m_ScrollSpeed2.SetBackgroundColor((wParam >= 2) ? rgbOn : rgbOff);
	m_ScrollSpeed3.SetBackgroundColor((wParam >= 3) ? rgbOn : rgbOff);

	return 0;
}

#endif // XHTMLDRAGDROP

⌨️ 快捷键说明

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