mfc CtreeCtrl上添加图标、将一个对话框放在另一个对话框上、CTreeCtrl响应不同的节点

1.CtreeCtrl的添加图标

(CImageList* m_pImageList4Tree;CBitmap m_bmp;)

	m_pImageList4Tree = new CImageList;
	m_bmp.LoadBitmap(IDB_BITMAP_FILETYPES);
	if(!m_pImageList4Tree->Create(16, 16, ILC_COLOR32 | ILC_MASK, 10, 0))
		return FALSE;
	m_pImageList4Tree->Add(&m_bmp,RGB(255,0,255));
	m_treeSelectList.SetImageList(m_pImageList4Tree,NULL);

使用方法:m_hTreeRoot = m_treeSelectList.InsertItem(L"基础筛选",9,9,NULL);//第一个9代表未选中前图标的显示,第二个9代表选中后图标的显示

2.将一个对话框放在另一个对话框上

	m_fileFilterDlg.Create(IDD_BASEDLG,0);//创建对话框
	SetWindowLong(m_fileFilterDlg.m_hWnd, GWL_EXSTYLE, GetWindowLong(m_fileFilterDlg.m_hWnd, GWL_EXSTYLE) & ~(WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME));  
	m_fileFilterDlg.ModifyStyle(WS_POPUPWINDOW|WS_CAPTION, WS_CHILD);//改变他的风格为chid的,并去掉WS_POPUPWINDOW|WS_CAPTION两个风格
	m_fileFilterDlg.SetParent(this);//设置父窗口
	m_fileFilterDlg.SetWindowPos(NULL,nLeft,nTop,nDlgWith,nDlgHigth,SWP_NOACTIVATE | SWP_NOZORDER);//摆放位置
SetWindowLong(m_fileFilterDlg.m_hWnd, GWL_EXSTYLE, GetWindowLong(m_fileFilterDlg.m_hWnd, GWL_EXSTYLE) & ~(WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME));  这个是为了去掉边框效果如下
如果没有那句话效果如下(可以看出多了一个悬浮的框)

3.CTreeCtrl响应不同的节点

ON_NOTIFY(NM_CLICK,IDC_SELECTTREE,OnDblClkTree)
afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);
void CNewSearchCenterDlg::OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult)
{
	CPoint point;
	GetCursorPos(&point);//获得鼠标点击的位置
	m_treeSelectList.ScreenToClient(&point);//转化为客户坐标
	UINT uFlags;
	HTREEITEM CurrentItem;
	CurrentItem=m_treeSelectList.HitTest(point,&uFlags);//获得当前点击节点的ITEM
	//HTREEITEM m_hTreeItem = m_treeSelectList.GetSelectedItem();如果只写这句那得到的是上一次选中的节点
	CString strType = m_treeSelectList.GetItemText(CurrentItem);
	if(strType == "基础筛选")
	{
		m_nSelectType = 0;
		m_fileFilterDlg.ShowWindow(SW_SHOW);
		m_imageFilterDlg.ShowWindow(SW_HIDE);
		m_officeFilterDlg.ShowWindow(SW_HIDE);
		m_mailFilterDlg.ShowWindow(SW_HIDE);
		

	}
	if (strType == "图片筛选")
	{
		m_nSelectType = 1;
		m_fileFilterDlg.ShowWindow(SW_HIDE);
		m_imageFilterDlg.ShowWindow(SW_SHOW);
		m_officeFilterDlg.ShowWindow(SW_HIDE);
		m_mailFilterDlg.ShowWindow(SW_HIDE);
		
	}
	if (strType == "文档筛选")
	{
		m_nSelectType = 2;
		m_fileFilterDlg.ShowWindow(SW_HIDE);
		m_imageFilterDlg.ShowWindow(SW_HIDE);
		m_officeFilterDlg.ShowWindow(SW_SHOW);
		m_mailFilterDlg.ShowWindow(SW_HIDE);
	}
	if (strType == "邮件筛选")
	{
		m_nSelectType = 3;
		m_fileFilterDlg.ShowWindow(SW_HIDE);
		m_imageFilterDlg.ShowWindow(SW_HIDE);
		m_officeFilterDlg.ShowWindow(SW_HIDE);
		m_mailFilterDlg.ShowWindow(SW_SHOW);
	}
	m_treeSelectList.Select(CurrentItem, TVGN_DROPHILITE);//将相应的Ctreectrl设置成高亮
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值