今天出了个奇怪的问题,当我在主窗口上创建一个用模板对话框的子窗口时,

在子窗口上放的TreeCtrl控件不响应LVN_SELCHANGED消息,也是晕死了,

我以为是消息捕获的问题,我在主窗口上也捕获不到,子窗口上也捕获不到,

最后跑到全局消息循环中也捕获不到,就这样消失了,不知道去哪去了.

好奇怪哦.

最后在网上找了半天,就用TVN_ITEMCHENGED消息码就能捕获了,晕菜了,

好吧,就用这个消息也可以,就不纠结哪些问题了.

1.TVN_ITEMCHENGED消息在WM_NOTIFY消息中的应用

在测试的时候,要获取两次数据,一次是原来选中的数据,一次是新选中的数据,

所以要用

if(tv->uChanged&TVIF_STATE&&tv->uStateNew&TVIS_SELECTED)
来判断是新选中的数据,还是原来选中的数据
int TreeDlg::OnTvnSelChanged_Tree1(UINT id, LPNMHDR lpNMHdr)
{
NMTVITEMCHANGE* tv = (NMTVITEMCHANGE*)lpNMHdr; if(tv->uChanged&TVIF_STATE && tv->uStateNew&TVIS_SELECTED)
{

      TCHAR itemText[32] = { 0 };


      TVITEM tvItem = { 0 };
      tvItem.mask = TVIF_TEXT;
      tvItem.hItem = tv->hItem;
      tvItem.cchTextMax = 32;
      tvItem.pszText = itemText;

      TreeView_GetItem(lpNMHdr->hwndFrom, &tvItem);

    }

    return 0;
}

2.LVN_SELCHANGED消息在WM_NOTIFY中的应用

INT_PTR QTreeDlg::OnNotify(WPARAM wParam, LPARAM lParam)
{
LPNMHDR lpHdr = (LPNMHDR)lParam;
if (lpHdr->idFrom == IDC_TREE1 && lpHdr->code == TVN_SELCHANGED)
{
TCHAR itemText[32] = { 0 }; NMTREEVIEW* pNMtv = (NMTREEVIEW*)lParam; TVITEM tv = { 0 };
tv.mask = TVIF_TEXT;
tv.hItem = pNMtv->itemNew.hItem;
tv.cchTextMax = 32;
tv.pszText = itemText;
TreeView_GetItem(lpHdr->hwndFrom, &tv);
int n = 9;
}
return 0;
}

只要能读出数据,用哪个消息都不存在,

但我又另弄了个工程,专门来测试这问题,新工程序中却又能捕获到LVN_SELCHANGED消息了,

却不能捕获LVN_ITEMCHANGED消息........................

再次晕菜了,

最后的最后,两个工程来回的试,不能两个消息都捕获,能捕获LVN_SETCHANGED,就不能捕获LVN_ITEMCHANGED,

问题是什么情况下用什么消息就弄不明白了,也就只好这样了,能捕获哪个就用哪个.........

win32 TreeCtrl控件通知消息, LVN_SELCHANGED和LVN_ITEMCHANGED用法的更多相关文章

  1. MFC之TreeCtrl控件使用经验总结

    树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点.MFC中使用CTreeCtrl类来封装树形控件的各种操作.通过调用BOOL ...

  2. MFC TreeCtrl 控件(一):简单使用

    本文描写叙述了 MFC 中的树形控件 TreeCtrl 的简单使用,内容包含数据项的加入.图标设置.提示信息设置等. 新建基于对话框的应用程序,加入一个 TreeCtrl ,为其定义一个控件变量 m_ ...

  3. win32创建控件的一些问题

    在我们使用CreateWindow();像一般控件建Windows扩展控件的时候我们会发现控件没有创建成功 这是因为我们没有对Windows扩展控件库进行初始化,这要我们使用InitCommonCon ...

  4. 如何给对话框中的控件发送消息呢?Windows消息分类

    以博文CTabCtrl中介绍的那样,给Tab添加子对话框来显示Tab内容.那么如果这个子对话框中含有个CTreeCtrl控件,有个Button控件,我想要模拟给这两个控件发送消息,该怎么办呢?直接把给 ...

  5. 【转载】MFC动态创建控件及其消息响应函数

    原文:http://blog.sina.com.cn/s/blog_4a08244901014ok1.html 这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)h ...

  6. MFC动态创建控件及其消息响应函数

    这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)http://topic.csdn.net/u/20101204/13/5f1b1e70-2f1c-4205-ba ...

  7. win32通用控件

    1.标准控件 可以在win32窗口程序中添加资源脚本来给程序添加标准控件: 具体操作为:新建资源脚本    ->在.rc文件中添加控件    ->给控件绑定事件:   常用的标准控件:   ...

  8. LKNotification控件-通知控件

    通知控件 项目介绍: 一个通知控件,长得很像iOS系统的通知栏弹出时候的样式.可以多个通知覆盖.引入项目之后,只需调用一行代码即可 [Java] 查看源文件 复制代码 ? 1 LKNotificati ...

  9. 【转】Win32 创建控件风格不是Win XP解决方案

    有时候我有在用Win32 API来向窗体上添加控件时,通过CreateWindow或CreateWindowEx创建出来的控件的风格不像XP风格,而是像Windows 2000的风格,界面很难看.注意 ...

随机推荐

  1. C++CLR类库封装Native类库并用C#调用 - 草稿

    1.创建Native类库 新建项目->其他语言->Visual C++->Win32控制台应用程序->DLL     添加头文件       添加源文件       选择生成路 ...

  2. msql中@RequestParam、@Param、@PathVariable的用法

    @RequestParam的用法 1.可以对传入参数指定参数名,将请求参数绑定至方法参数 // 下面的对传入参数指定为aa,如果前端不传aa参数名,会报错 @RequestParam(value=&q ...

  3. Best Cow Line

    给定长度为N的字符串s,要构造一个长度为N的字符串T.起初,T是一个空串,随后反复进行下列任意操作. -从S的头部删除一个字符,加到T的尾部 -从S的尾部删除一个宇符,加到T的尾部 目标是要构造字典序 ...

  4. SpringCloud降级熔断 Hystrix

    1.分布式核心知识之熔断.降级讲解 简介:系统负载过高,突发流量或者网络等各种异常情况介绍,常用的解决方案 1.熔断:         保险丝,熔断服务,为了防止整个系统故障,包含子和下游服务 下单服 ...

  5. Java学习之 多态 Polymorphism

    转自:http://www.cnblogs.com/mengdd/archive/2012/12/25/2832288.html 多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一 ...

  6. 使用什么快捷键,关闭、打开、最小化qq聊天窗口

    Alt+F4或者Alt+C关闭聊天窗口.Alt+空格+N 最小化聊天窗口.Alt+H 打开聊天记录,打开聊天窗口没有快捷键,必须点击qq好友图标

  7. 程序挂了之后别再跟我说让我帮你重启啦! 让supervisor帮你搞定...

    目录 有啥用? 安装 生成配置文件 启动supervisor 自定义配置文件 控制命令 求关注啦 有啥用? 很多我们项目排期进入联调.测试阶段,如果QA同学是直接跟你要一个后端环境的话,那简单点大概率 ...

  8. vue JS获取当前时间并格式化 ( 前端小细节,大进步 )

    JS // 获取并且格式化时间     formatter (thistime, fmt) {       let $this = new Date(thistime)       let o = { ...

  9. 【SpringMVC】文件上传与下载、拦截器、异常处理器

    文件下载 使用ResponseEntity实现下载文件的功能 index.html <!DOCTYPE html> <html lang="en" xmlns:t ...

  10. [考试总结]noip模拟47

    感觉自己放弃题目还是过于容易. 其实第一题不是很难,但是自己拿了一个暴力就走人了.. 然后其实简单优化一下子就有不少分数. 然后第二题的本质不同的子序列个数的方程没有推出来,如果推出来就会直接有 \( ...