//从资源视图中加载位图
CBitmap bmp1;
m_ImageList.Create(16,16,ILC_COLOR32 | ILC_MASK,2,6); //不能少
bmp1.LoadBitmap(IDB_BITMAP1);
m_ImageList.Add(&bmp1, RGB(192,192,192));
bmp1.DeleteObject(); //必须的,不然出错
bmp1.LoadBitmap(IDB_BITMAP2);
m_ImageList.Add(&bmp1, RGB(192,192,192));
bmp1.DeleteObject();
//设置CTreeCtrl对象与图像列表关联
m_Tree.SetImageList(&m_ImageList,TVSIL_NORMAL );
//插入节点并扩展显示
HTREEITEM m_hroot;
m_Tree.SetBkColor(RGB(192,192,192)); //设置背景颜色
m_hroot=m_Tree.InsertItem(_T("华御大厦"),1,1);
m_Tree.InsertItem(_T("1楼"),0,0,m_hroot);
m_Tree.InsertItem(_T("2楼"),0,0,m_hroot);
m_Tree.InsertItem(_T("3楼"),0,0,m_hroot);
m_Tree.Expand(m_hroot,TVE_EXPAND);
控件响应NM_CLICK消息。
void C树Dlg::OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
CPoint pt;
GetCursorPos(&pt);
m_Tree.ScreenToClient(&pt);
HTREEITEM item=m_Tree.HitTest(pt); //HitTest函数能够得到与当前鼠标位置相关的项
m_Tree.Select(item,TVGN_CARET);
CMenu menu, *pMenu;
menu.LoadMenu(IDR_MENU1);
if (m_Tree.GetItemText(item)=="华御大厦")
{
//显示菜单
pMenu = menu.GetSubMenu(0);
m_Tree.ClientToScreen(&pt);
pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this);
}
else if(m_Tree.GetItemText(item)!="")
{
//显示菜单
pMenu = menu.GetSubMenu(1);
m_Tree.ClientToScreen(&pt);
pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this);
}
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}