CTreeCtrl获得鼠标点击时的节点

原文链接: http://blog.csdn.net/lcalqf/article/details/21321923

1、添加图标

HICON icon[10];
icon[0]=AfxGetApp()->LoadIcon(IDI_ICON1);
icon[1]=AfxGetApp()->LoadIcon(IDI_ICON5);

m_imagelist.Create(16,16,ILC_COLOR32| ILC_MASK,7,7);//16*16的图标,7*7为该list最多能容纳的图标数。
m_imagelist.Add(icon[0]);
m_imagelist.Add(icon[1]);

m_videotree.SetImageList(&m_imagelist,TVSIL_NORMAL);
video_root=m_videotree.InsertItem("视频",0,0,TVI_ROOT,TVI_LAST);

//第2个参数是item在添加好后的图标第3个参数为item在被选中后的图标
m_videotree.InsertItem("190515.mp4",1,1,video_root,TVI_LAST);
m_videotree.InsertItem("200515.mp4",0,0,video_root,TVI_LAST);
m_videotree.InsertItem("210515.mp4",1,1,video_root,TVI_LAST);
m_videotree.InsertItem("220515.mp4",0,0,video_root,TVI_LAST);

2、获得鼠标点击的节点值

添加树形控件的NM_CLICK消息处理,假如其相应的消息处理函数为OnClickVideoTree,树形控件的成员变量为m_videotree

void CPlayDlg::OnClickVideoTree(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here

CPoint point;
GetCursorPos(&point);//获得鼠标点击的位置
m_videotree.ScreenToClient(&point);//转化为客户坐标
UINT uFlags;

HTREEITEM CurrentItem;
CurrentItem=m_videotree.HitTest(point,&uFlags);//获得当前点击节点的ITEM
//获得该节点的父节点
// HTREEITEM ParentItem=m_videotree.GetParentItem(CurrentItem);
CurrentVideo=m_videotree.GetItemText(CurrentItem) ;//获得节点值

}

3、树形控件操作相关函数

ItemHasChildren(hParent) 搜索//判断结点是否有子结点
hItem=GetChildItem(hParent); //获取第一个子结点
hItem=GetNextSiblingItem(hItem)); //获取下一个兄弟结点结点

时间: 2024-10-10 07:11:52

CTreeCtrl获得鼠标点击时的节点的相关文章

求助:程序如何模拟鼠标点击一个TreeView节点?

void CreateTreeViewControl(HWND hMainWnd) { g_hTreeView = CreateWindow(WC_TREEVIEW, _T("Tree View"), WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_HASLINES | TVS_LINESATROOT, 5, 5, 320, 480, hMainWnd, NULL, hInst, NULL); TVINSERTSTRUCT tvInsertStruct

去掉鼠标点击时边框出现的颜色边框

before:        after : 样式中输入以下代码,即可解决该问题 outline: none; 适用于表单内的input(文本框).select(下拉菜单).textarea(文本区域)标签

css基础 outline:none 取消input的 鼠标点击时蓝色的框框 效果

礼悟:    公恒学思合行悟,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼养身心,诚劝且行且珍惜.              ide:visual studio 2017             browser:Chrome                     os:win7 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8&qu

JavaScript获取鼠标点击坐标

如何用JavaScript获取鼠标点击时在canvas画布上的坐标呢: 代码如下: -------------------------------------------------------------- 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>demo</title> 6

鼠标点击事件

1 鼠标点击事件 2 onclick 元素上发生鼠标点击时触发. 3 ondblclick 元素上发生鼠标双击时触发. 4 ondrag 元素被拖动时运行的脚本. 5 ondragend 在拖动操作末端运行的脚本. 6 ondragenter 当元素元素已经被拖动到有效拖放区域时运行的脚本. 7 ondragleave 当元素离开有效拖放目标时运行的脚本. 8 ondragover 当元素在有效拖放目标上正在被拖动时运行的脚本. 9 ondragstart 在拖动操作开端运行的脚本. 10 on

GUI 编程 —— QT 的 QSlider 鼠标点击定位问题

这几天打算封装 libvlc 实现一个简单的播放器操作类,用 QT 写 UI 测试程序的时候,发现播放进度的显示控件 QSlider 在处理鼠标点击时,并不能直接定位到鼠标按下的位置.为解决这一问题,我在网上看了几篇博文提供的解决办法,但实现的效果并不理想,主要的问题是:鼠标点击定位时,出现位置偏差.鉴于这,我提供了如下的解决办法. 1. 为 QSlider 控件设置事件过滤 在 QSlider 控件父窗口初始化的时候设置(比如我的代码中就在 Widget 构造函数中设置): Widget::W

C# chart,有关如何在鼠标移动到Series上时显示节点及数据 (有待继续更新)

一.效果与思路 效果: 解决方案1 用chart的mousemove时间,实时跟踪鼠标最近的X轴的位置,然后把cursorX设置到那个位置上,让用户知道我是选的那一个X的值,同时用tooltip显示该X轴上所有的Y值,结贴了谢谢大家. 至于如何显示鼠标移动到的那个series上的数据节点,可以在Mousmove时,用一个击中测试,判断. 参考代码,击中测试获得点数据点的索引: if (e.HitTestResult.ChartElementType == ChartElementType.Dat

在EasyUI实现点击有子节点的文字时展开但不选中,点击最终子节点才选中的功能

最近做的项目中,总是会遇到需要实现点击树目录的有子节点时展开目录,点击最终子节点才实现选中的功能的需求.下边我就直接黏贴一下代码出来吧,非常容易看懂,关键的就是在选中事件中加一个判断. $('#RepairTID').combotree({        url: '/RepairSub/GetRepTypeZ/?userRole=5',        required: true,        panelHeight: 'auto',        onLoadSuccess: functi

VirtualTreeview鼠标移动到相应节点时,节点背景颜色发生变化

VirtualTreeview鼠标移动到相应节点时,节点背景颜色发生变化 procedure TForm1.VirtualStringTree1BeforeItemErase( Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; ItemRect: TRect; var ItemColor: TColor; var EraseAction: TItemEraseAction); begin if Sender.