我用VC已经做好了一个树型控件,向windows资源管理器一样.并且能用鼠标右键单击,并弹出一个快捷菜单.想在菜单中实现对树型控件节点的增加和删除.找了很多资料,都是对树型控件拖动的.我比较笨,希望能给出代码或参考资料.
解决方案 »
- png图片填充GDI+画刷?//方法对吗???
- 鼠标控制窗口开关
- 请问如何让ATL的复合控件不显示?
- 这种图像应该如何显示?
- udp的网络系统,在服务器端接受客户端数据(recvfrom)的时候发现客户端的port发生了变化,可能是什么原因?
- 如何在单文档的视图中加入动画??
- OpenClipboard()函数需要参数么
- 求助:关于AfxMessageBox()函数
- DLL调用DLL的问题
- 对某一dll,客户程序通过气头文件和lib文件来调用与用loadlibrary()方法调用在本质上有何区别?
- 怎样得到声卡上的IAMCrossbar接口
- 怪问题,控件HTTP上传方法执行1,3,5,7....次成功,第2,4,6,8...次失败
CTreeCtrl::GetSelectedItem();
CTreeCtrl::DeleteItem
pmyTreeCtrl->GetSelectedItem
pmyTreeCtrl->DeleteItem
pmyTreeCtrl->InsertItem
先建父节点 HTREEITEM root = m_TreeCtrl.InsertItem("VCKBASE",0,0);
HTREEITEM subroot1=m_TreeCtrl.InsertItem("程序员社区",1,1,root);
HTREEITEM subroot2=m_TreeCtrl.InsertItem("文档中心",1,1,root);
HTREEITEM subroot3=m_TreeCtrl.InsertItem("代码仓库",1,1,root);
HTREEITEM subroot4=m_TreeCtrl.InsertItem("工具和资源",1,1,root);
HTREEITEM subroot5=m_TreeCtrl.InsertItem("客服中心",1,1,root);
HTREEITEM subroot6=m_TreeCtrl.InsertItem("个人专栏",1,1,root);
然后建子节点
m_TreeCtrl.InsertItem("开发论坛",1,1,subroot1);
m_TreeCtrl.InsertItem("开发联盟",1,1,subroot1);
m_TreeCtrl.InsertItem("人才交流",1,1,subroot1);
m_TreeCtrl.InsertItem("用户注册",1,1,subroot1);
m_TreeCtrl.InsertItem("VCity",1,1,subroot1);
m_TreeCtrl.InsertItem("在线杂志",1,1,subroot2);
m_TreeCtrl.InsertItem("个人专辑",1,1,subroot2);
m_TreeCtrl.InsertItem("论坛精华",1,1,subroot2);
m_TreeCtrl.InsertItem("酷库",1,1,subroot2);
m_TreeCtrl.InsertItem("所有文章",1,1,subroot2);
m_TreeCtrl.InsertItem("所有代码",1,1,subroot3);
m_TreeCtrl.InsertItem("程序工具箱",1,1,subroot4); m_TreeCtrl.InsertItem("程序工具箱",1,1,subroot5);
m_TreeCtrl.InsertItem("用户注册",1,1,subroot5);
m_TreeCtrl.InsertItem("修改信息",1,1,subroot5);
m_TreeCtrl.InsertItem("取回密码",1,1,subroot5);
m_TreeCtrl.InsertItem("问题解答",1,1,subroot5);
m_TreeCtrl.InsertItem("投稿",1,1,subroot5);
m_TreeCtrl.InsertItem("联系我们",1,1,subroot5);
m_TreeCtrl.SelectItem(root);
m_TreeCtrl.Expand(root, TVE_EXPAND);
m_TreeCtrl.Expand(subroot1, TVE_EXPAND);
m_TreeCtrl.Expand(subroot2, TVE_EXPAND);
m_TreeCtrl.Expand(subroot3, TVE_EXPAND);
m_TreeCtrl.Expand(subroot4, TVE_EXPAND);
m_TreeCtrl.Expand(subroot5, TVE_EXPAND);
return 0;
鼠标右击弹出快捷菜单
oid MyTree::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU1));
CMenu *pPopup=menu.GetSubMenu(0);
ASSERT(pPopup !=NULL);
POINT gpoint;
GetCursorPos(&gpoint);
DWORD SelectionMade=pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_NONOTIFY|TPM_RETURNCMD,
gpoint.x,gpoint.y,this);
switch(SelectionMade)
{
case IDM_ADD:
case IDN_DEL:
}
就是不知道switch里怎么写增加和删除节点的代码.
用HTREEITEM GetSelectedItem( );获取选中的节点。然后DeleteItem就删除了。
GetCursorPos(&gpoint);
ScreenToClient(&gpoint);
UINT uFlags;
HTREEITEM hItem = HitTest(gpoint, &uFlags);
if (hItem)
{
SelectItem(hItem);
DWORD SelectionMade=pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_NONOTIFY|TPM_RETURNCMD,
gpoint.x,gpoint.y,this);
switch(SelectionMade)
{
case IDM_ADD:
InsertItem("aaa",hItem,hItem);
break;
case IDN_DEL:
DeleteItem(hItem);
break;
}}