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響應不同的節點
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設置成高亮
}