CTreeCtrl的单击问题

amuzifengling 2011-08-21 04:41:17
1.响应左键单击,用TVN_SELCHANGED还是NM_CLICK还是LButtonDown?这三个有什么区别呢?

2.我实现的树结构如下:

用户列表
老师列表
老师XX1 //每一位老师名
老师XX2
......
学生列表
学生XX1 //每一位学生名
学生XX2

现在想实现单击某个用户,显示该用户资料。树中老师或学生的名字是从数据库读取的。
有一种办法是取得所选结点的文本,然后到数据库中查询结点文本对应名字的用户,将其资料显示出来。但问题是名字并不是数据库表的主键,可能会出现重名,这方法貌似行不通。
于是我又想,初始化树的时候是按着数据库表的用户排列顺序初始化的,如果能够知道所选的是第几位老师或是第几位学生不就可以顺利找到资料了,问题是不知道怎么获取所选结点是第几个啊

请帮忙想想办法,谢谢!
...全文
201 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxj6543546 2011-08-25
  • 打赏
  • 举报
回复
1.tree->GetSelectItem();
2.如果每个节点都有ID
tree->GetSelectItemNum();
Eleven 2011-08-25
  • 打赏
  • 举报
回复
1. 都可以
2. 可以利用CTreeCtrl::SetItemData()为每个HTREEITEM节点关联一个数据结构
hnzlk 2011-08-25
  • 打赏
  • 举报
回复

HTREEITEM hItem = pmyTreeCtrl->GetSelectedItem();


amuzifengling 2011-08-25
  • 打赏
  • 举报
回复
先谢谢两位咯!
[Quote=引用 2 楼 gameslq 的回复:]

如#1所说
1.用TVN_SELCHANGED还是NM_CLICK还是LButtonDown 都可以实现
2.用树空间节点结构TVITEM成员pszText存老师或学生的名字,用lParam 存 表主键 即可
[/Quote]

请问怎么获取所选的TVITEM?用HitTest函数取得的是HTreeItem吧?
gameslq 2011-08-21
  • 打赏
  • 举报
回复
如#1所说
1.用TVN_SELCHANGED还是NM_CLICK还是LButtonDown 都可以实现
2.用树空间节点结构TVITEM成员pszText存老师或学生的名字,用lParam 存 表主键 即可
icansaymyabc 2011-08-21
  • 打赏
  • 举报
回复
1、都可以,主要看你喜欢怎么做

2、除了显示出来的用户名,你得同时保存不显示的主键。当用户点击用户名时,你获得的是主键。就用主键查询出你要的信息。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧