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设置成高亮
}