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

在子窗口上放的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,

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

最新文章

  1. TGridPanel做一个自动按比例缩放的窗体
  2. wordpress如何批量关闭旧日志留言功能
  3. 浅谈 LCA
  4. Java设计模式-Builder生成器模式
  5. Android UmengShareSDK第三方登录
  6. swun 1397 来电显示
  7. HDU5808Price List Strike Back (BestCoder Round #86 E) cdq分治+背包
  8. map使用.xml
  9. SDWebImage内存性能优化
  10. color 颜色代码 android res/values/colors.xml
  11. android自定义控件之滚动广告条
  12. thinkphp中表有前缀名的时候申明模板的方法
  13. iOS第三方开源库的吐槽和备忘(转)
  14. 小甲鱼OD学习第12讲
  15. MvcHtmlString解决MVC中从后台返回HTML代码被编码问题
  16. js 时间戳 vue 时间戳的转换 ?
  17. 路由刷rom手册
  18. cmd下的一些小技巧
  19. oracle如何通过cmd导出某个用户下的所有表
  20. InnoDB中锁的算法(3)

热门文章

  1. C++ 各种构造函数
  2. Javascript - Vue - 动画
  3. Python也可以拥有延迟函数
  4. rabbitMQ重复消费(结合死循环重发那一篇看)
  5. ES6扩展——数值扩展
  6. 《网页布局基础篇》HTML+CSS单列布局--水平居中,垂直居中,水平垂直居中
  7. ubuntu下安装teamiewer
  8. Linux centos7 复制,移动,删除文件或文件夹
  9. Jenkins 使用PowerShell插件部署Net5项目
  10. WebService学习总结(二)--使用JDK开发WebService