热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

高分求助:触发了CListViewCtrl的LVN_COLUMNCLICK消息,但响应函数却不响应,详见内容

在CMainFrame::OnCreate中通过下列语句创建了一个CListViewCtrl控件:m_filetree.Create(m_dock,rcDefault,NULL,13423
在CMainFrame::OnCreate中通过下列语句创建了一个CListViewCtrl控件:
m_filetree.Create( m_dock, rcDefault, NULL, 1342373943, 516 );
m_filetree.SetDlgCtrlID(ID_FILE_LIST); //#define ID_FILE_LIST 6666666
m_filetree.SetWindowText( _T("文件表") );


其中m_fileReport为CListFormImpl类型的派生类 对象
class CListFormImpl : 
    public CWindowImpl,
    public CCustomDraw



在BEGIN_MSG_MAP(CMainFrame) 中消息映射宏NOTIFY_HANDLER(ID_FILE_LIST,LVN_COLUMNCLICK,NotifyHandler)

NotifyHandler函数的声明为LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);

但是当用鼠标点击m_fileReport对应列表的列时,却进入不了函数NotifyHandler

14 个解决方案

#1


在view里相应试试
Frame
doc
view

有个响应顺序,从下往上,注意return的0或1

#2


把ID改小一些,不要超过65535。
用SPY++监视一下消息,看看是否正常。

#3


to:cnzdgs

引用 2 楼 cnzdgs 的回复:
把ID改小一些,不要超过65535。
用SPY++监视一下消息,看看是否正常。


刚才按照你说的把ID 改成了65534(不要超过65535)
好象还是响应不了

现在有个问题:
我现在的处理方法:预定义一个ID_FILE_LIST,然后将通过
NOTIFY_HANDLER(ID_FILE_LIST,LVN_COLUMNCLICK,NotifyHandler),然后将消息LVN_COLUMNCLICK映射到ID为ID_FILE_LIST的控件上,最后通过语句m_filetree.SetDlgCtrlID(ID_FILE_LIST)将ID_FILE_LIST与控件m_filetree关联起来。这样让目标控件来响应这个消息

不知道这种方式是否可行。

#4


该回复于2010-04-14 08:55:28被版主删除

#5


Unless the LVS_NOCOLUMNHEADER window style is specified, column headers appear in report view. The user can click a column header, causing an LVN_COLUMNCLICK notification message to be sent to the parent window


#define ID_LIST_CTRL 10000
CListCtrl mList;

//create and initialize ListCtrl
  mList.Create(WS_CHILD | LVS_REPORT | WS_VISIBLE,
    CRect(0,0, 100, 100), this, ID_LIST_CTRL);
  for(int i=0;i<10;i++)
  {
    CString itmStr;
    itmStr.Format(_T("%c"), _T('A')+i);
    mList.InsertColumn(i, itmStr, LVCFMT_CENTER, 20);
  }

//Process ListCtrl message
LRESULT CAaDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
  // TODO: Add your specialized code here and/or call the base class
  
  if(message == WM_NOTIFY && wParam == ID_LIST_CTRL)
  {
    LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam; 
    if(pnmv->hdr.code == LVN_COLUMNCLICK)
    { 
      //Add your code here
      TRACE(_T("LVN_COLUMNCLICK %d\n"), pnmv->iSubItem);
    }
  }

#6


自己顶一下

#7


再补充下:

m_fileReport.Create( m_dock, rcDefault, 0, 0, LVS_EX_FULLROWSELECT|LVS_REPORT );
m_fileReport.SetDlgCtrlID(ID_FILE_LIST); 
m_fileReport.SetWindowText( _T("文件") );
m_dock.AddWindow( m_fileReport );
m_dock.DockWindow( m_fileReport, DOCK_BOTTOM );


在创建后,通过m_dock来设置停靠,m_dock为CDotNetDockingWindow的对象

class CDotNetDockingWindow : 
   public CDockingWindowImpl<, , >


在创建的时候使用的是m_dock为父窗口,最后以为是父窗口指定不对,但是换成this->m_hWnd也不对,不知道是不是父窗口指定为m_dock的原因,如果是,应该如何处理这个消息映射

#8


up...

#9


这些用wizzard自动生成为好,不要自己手工添加

#10


原来用的wtl,还是自己下断点调试一下吧

#11


你可以把代码发给我,gw_net@163.com
我帮你调一下

#12


你可以在CListFormImpl类里面用
REFLECTED_NOTIFY_CODE_HANDLER(LVN_COLUMNCLICK, OnColumnClick)
这样就不用管父窗口是谁了,都是反射给它自己处理的

#13


引用 12 楼 laiyiling 的回复:
你可以在CListFormImpl类里面用
REFLECTED_NOTIFY_CODE_HANDLER(LVN_COLUMNCLICK, OnColumnClick)
这样就不用管父窗口是谁了,都是反射给它自己处理的


我最后用过REFLECTED_NOTIFY_CODE_HANDLER,不过还是响应不了.
最后怀疑是控件风格的问题,不过重新设置其风格还是响应不了

#14


引用 11 楼 gw_net 的回复:
你可以把代码发给我,gw_net@163.com
我帮你调一下


我晚上整理下再发给你

推荐阅读
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • WPF开发心率检测大数据曲线图的高性能实现方法
    本文介绍了在WPF开发中实现心率检测大数据曲线图的高性能方法。作者尝试过使用Canvas和第三方开源库,但性能和功能都不理想。最终作者选择使用DrawingVisual对象,并结合局部显示的方式实现了自己想要的效果。文章详细介绍了实现思路和具体代码,对于不熟悉DrawingVisual的读者可以去微软官网了解更多细节。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
author-avatar
连向明
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有