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







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章