社区
界面
帖子详情
对树型控件节点的增加,删除.100分!!!
superboy123
2005-09-23 10:33:03
我用VC已经做好了一个树型控件,向windows资源管理器一样.并且能用鼠标右键单击,并弹出一个快捷菜单.想在菜单中实现对树型控件节点的增加和删除.找了很多资料,都是对树型控件拖动的.我比较笨,希望能给出代码或参考资料.
...全文
298
7
打赏
收藏
对树型控件节点的增加,删除.100分!!!
我用VC已经做好了一个树型控件,向windows资源管理器一样.并且能用鼠标右键单击,并弹出一个快捷菜单.想在菜单中实现对树型控件节点的增加和删除.找了很多资料,都是对树型控件拖动的.我比较笨,希望能给出代码或参考资料.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
phoenix96_2000
2005-09-23
打赏
举报
回复
噢.后面哪儿弹出菜单前应该还要加上 ClientToScreen(&gpoint),:)
phoenix96_2000
2005-09-23
打赏
举报
回复
是没错的,他是指定了TPM_RETURNCMD:
你可以在前面先,HITTEST一下,如果有就选中这个项,这样可以右键直接点击就可以选中这个项
CPoint point;
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;
}
}
zxyjyzxyjy
2005-09-23
打赏
举报
回复
不是这样做吧,TrackPopupMenu函数返回的是BOOL,你应该在响应菜单的消息处理函数中,去获得你选择的项目,在进行增加或删除。
快乐鹦鹉
2005-09-23
打赏
举报
回复
哦。那要先判断点击的是哪个节点。
用HTREEITEM GetSelectedItem( );获取选中的节点。然后DeleteItem就删除了。
superboy123
2005-09-23
打赏
举报
回复
这个树的结构是这样的
先建父节点
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里怎么写增加和删除节点的代码.
zxyjyzxyjy
2005-09-23
打赏
举报
回复
调用这几个函数就行了,可查MSDN帮助
pmyTreeCtrl->GetSelectedItem
pmyTreeCtrl->DeleteItem
pmyTreeCtrl->InsertItem
goodboyws
2005-09-23
打赏
举报
回复
很简单
CTreeCtrl::GetSelectedItem();
CTreeCtrl::DeleteItem
微软树型
控件
拖动
节点
、
增加
节点
、
删除
节点
等功能演示.zip
treeview微软树型
控件
拖动
节点
、
增加
节点
、
删除
节点
等功能演示.zip
逐行读取
节点
的树型浏览
控件
具有逐行读取
节点
的树型浏览
控件
代码
TreeView
控件
树型多
节点
选择应用实例_TreeView
控件
树型多
节点
选择应用_
TreeView
控件
树型多
节点
选择应用实例
javascript树型
控件
,绝对好用!
自己写的一个树型
控件
,很好用哦。支持动态的添加
节点
、
删除
节点
、自定义
节点
图标等。功能使用绝对方便! 此次上传是经过修改的版本,在
节点
数目较多的情况下,比如500个以上,大大加快了加载速度。以及修正了在
节点
...
dtree树型
控件
(纯js)
dtree是一个由JavaScript编写成的简单的树形菜单组件,目前免费并且开源。dtree 目前有很多的树形菜单组件(比如ext),dtree是一种简单易懂的js组件,不需要复杂的操作即可生产,同时支持动态从数据库引入数据。 ...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章