Win32 sdk 下树形控件响应鼠标单击与双击,获得选中项的名称
//窗口过程函数
INT_PTR CALLBACK myWin::myWinDlgProc(HWND dlgHwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ switch (uMsg)
{
case WM_COMMAND:
{
OnCommand(wParam, lParam);
return 1;
} case WM_ACTIVATE:
if (WA_INACTIVE != LOWORD(wParam)) {
SetFocus(dlgHwnd);
}
return TRUE; case WM_CLOSE:
DestroyWindow(dlgHwnd);
return 1;
case WM_DESTROY:
PostQuitMessage(0);
return 0; case WM_INITDIALOG:
win_hWnd = dlgHwnd;
OnInitDialog();
return 1; case WM_CONTEXTMENU:
OnContextMenu(wParam);
return 1; case WM_NOTIFY:
OnNotify(wParam,lParam);//树形控件返射消息
return 1;
}
return 0;
}
BOOL MyAppClass::OnNotify(WPARAM wParam, LPARAM lParam)
{
LPNMHDR lphr = (LPNMHDR)lParam;
if (lphr->hwndFrom == hTree) //判断是否是树形控件发来的消息
{
switch (lphr->code)
{
case NM_CLICK: //鼠标单击
OnCloickTree(lphr);
break;
case NM_DBLCLK: //鼠标双击
OnRCloickTree(lphr);
break;
}
}
return TRUE;
}
//鼠标双击消息
void MyAppClass::OnRCloickTree(LPNMHDR lphr)
{ HTREEITEM htItem;
TVITEM tvi;
htItem = TreeView_GetSelection(hTree); if (htItem == NULL)
return;
TCHAR szText[20];
memset(&tvi, 0, sizeof(tvi));
tvi.mask = TVIF_TEXT | TVIF_PARAM;
tvi.hItem = htItem;
tvi.pszText = szText;
tvi.cchTextMax = sizeof(szText);
TreeView_GetItem(hTree, &tvi); SetDlgItemText(win_hWnd, IDC_EDIT1, szText);
}
我一直用这写在单击消息中,老是得到前一个选中项的数据
弄了好几天,查了好多资料都不行,连MFC我的复制过来还是不行,晕死了.
最后在网上找了好久才找到要单击要用鼠标坐标来判断,用TreeView_HitTest()宏,
这他妈的从哪知道呀.
void MyAppClass::OnCloickTree(LPNMHDR param1)
{ TVHITTESTINFO thti;
HTREEITEM htItem;
TVITEM tvi;
POINT point; GetCursorPos(&point);
ScreenToClient(hTree, &point);
thti.pt = point;
thti.flags = TVHT_TORIGHT;
htItem = TreeView_HitTest(hTree, &thti); if (htItem == NULL)
return; TCHAR szText[20];
memset(&tvi, 0, sizeof(tvi));
tvi.mask = TVIF_TEXT | TVIF_PARAM;
tvi.hItem = htItem;
tvi.pszText = szText;
tvi.cchTextMax = sizeof(szText);
TreeView_GetItem(hTree, &tvi); SetDlgItemText(win_hWnd, IDC_EDIT1, szText); }
以上都在vs2017中测试通过

Win32 sdk 下树形控件响应鼠标单击与双击,获得选中项的名称的更多相关文章
- win32: 文本编辑框(Edit)控件响应事件
过去几年,关于文本编辑框(Edit)控件的响应事件,我都是在主程序 while(GetMessage(&messages, NULL, 0, 0)) { ... } 捕获. 总感觉这种方式让人 ...
- win32 sdk列表视图控件(ListCtrl或ListView)资料整理
列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来.与树视图类似,列表控件可以由多个子项目组成,可以设置为Icon ...
- win32 sdk绘制ListBox控件
1>产生: // HWND CreateLB(HWND parentWnd) { HWND hListBox=0; hListBox = CreateWindow("LISTBOX&q ...
- win32 sdk 列表视图控件绘制
////////////////////////////////////////////////////////////// LRESULT ListViewCustomDraw(HWND hwnd, ...
- Element-ui树形控件el-tree鼠标移入显示隐藏效果超简单
显示效果: 废话不多说,直接上代码 <template> <el-tree default-expand-all :data="data"> <spa ...
- vue+element-ui之tree树形控件有关子节点和父节点之间的各种选中关系详解
做后端管理系统,永远是最蛋疼.最复杂也最欠揍的事情,也永远是前端开发人员最苦逼.最无奈也最尿性的时刻.蛋疼的是需求变幻无穷,如同二师兄的三十六般变化:复杂的是开发难度寸步难行,如同蜀道难,难于上青天: ...
- 解决easyUI下拉控件无法触发onkeydown事件
实现在combotree下拉控件中按Backspace键清除combotree选中的值 下面的代码无法获取到键盘事件 <input class="easyui-combotree&qu ...
- VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)
前面一节讲了树形控件Tree Control的简介.通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件的创建.CTreeCtrl类的主要成员函数和应用实例. 树形控件的创建 MFC为树形控件提 ...
- VS2010-MFC(常用控件:树形控件Tree Control 下)
转自:http://www.jizhuomi.com/software/203.html 前面一节讲了树形控件Tree Control的简介.通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件 ...
- Delphi 获取当前鼠标下的控件内容
Delphi 获取当前鼠标下的控件内容 主要函数: GetCursorPos://获取鼠标的位置 WindowFromPoint://获取制定point下的handle GetClassName:// ...
随机推荐
- Linux设备模型:1、设计思想
背景 搞Linux搞这么久,一直在调试各种各样的驱动.却发现对Linux驱动有太多不够了解的地方.因此转载了 蜗窝科技 的有关文章,作为学习. 内容有少量纠正,样式有做调整. 作者:wowo 发布于: ...
- 流程图渲染方式:Canvas vs SVG
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霁明 背景 我们产品中会有一些流程图应用,例如审批中心的审 ...
- 一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
前言 对于后端程序员来说,编写SQL代码是日常工作中不可或缺的一部分.然而,随着数据复杂性的增加,如何高效.准确地编写SQL查询成为了新的挑战.幸运的是,SQL Translator的出现为后端程序员 ...
- docker部署微服务之注册中心
1.首先要对对应服务的pom.xml文件进行修改,添加如下配置. 2.在微服务的pom.xml目录下建立Dockerfile文件 3.在Dockerfile当前目录下执行mvn clean insta ...
- 【规范】Git分支管理,看看我司是咋整的
前言 缘由 Git分支管理好,走到哪里都是宝 事情起因: 最近翻看博客中小伙伴评论时,发现文章[规范]看看人家Git提交描述,那叫一个规矩一条回复: 本狗亲测在我司中使用规范的好处,遂把我司的Git分 ...
- Spring声明事务和分布式事务处理技术
Spring声明事务的两种方式 方式一.传统的编程式事务管理: 需要手动编写代码在业务层注入事务管理模板(一般不用) 方式二.基于 AOP 技术实现的声明式事务管理: Spring 声明式事务管理在底 ...
- Oracle ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
转载☞:https://blog.csdn.net/qq_25221835/article/details/82762416 ROW_NUMBER 语法 语法格式:row_number() over( ...
- 使用scikit-learn构建模型
sklearn中还存在许多不同的机器学习模型可以直接调用,相比于自己撰写代码,直接使用sklearn的模型可以大大提高效率. sklearn中所有的模型都有四个固定且常用的方法,分别是model.fi ...
- 操作系统|SPOOLing(假脱机)技术
什么是假脱机技术,它可以解决什么问题? 什么是脱机技术 要回答什么是假脱机技术,首先我们需要知道什么是脱机技术.<计算机操作系统(第四版)>写道: 为了解决人机矛盾及CPU和I/O设备之间 ...
- CSS:弹性布局(display:flex)
道友请了~ 最近小道在修练主修功法<嘉蛙>之余,偶然从一名散修手中得到了一本<CSS秘籍>,刚好近期有自己做微信小程序的打算,这不是瞌睡了给递枕头么.欣喜若狂,翻开第一章,拜读 ...