在CMainFrame::OnCreate中通过下列语句创建了一个CListViewCtrl控件
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_fileReport为CListFormImpl类型的派生类 对象
class CListFormImpl : 
    public CWindowImpl<CListFormImpl, CListViewCtrl, CListTraits>,
    public CCustomDraw<CListFormImpl>
通过以下几种方式都试过了,始终响应不了LVN_COLUMNCLICK
1、在CMainFrame的BEGIN_MSG_MAP(CMainFrame) 中消息映射宏
    NOTIFY_HANDLER(ID_FILE_LIST,LVN_COLUMNCLICK,NotifyHandler)
2、CListFormImpl类里面用REFLECTED_NOTIFY_CODE_HANDLER(LVN_COLUMNCLICK, OnColumnClick)3、怀疑是控件风格问题,更改了控件的风格以上几种方式都试过了,就是响应不了这问题纠结几点了,急需高人指点。如果可以的话,也可以把工程发给你,帮忙调试下。不胜感激!!!

解决方案 »

  1.   

    LVN_COLUMNCLICK是通知给父窗口的。从你创建的代码看,父窗口是 m_dock, 应当在 m_dock窗口响应该消息
      

  2.   

    你应该由 m_dock 窗口 响应消息,在转发给 mainframe,或者给控件处理
      

  3.   


    我用CListFormImpl类里面用REFLECTED_NOTIFY_CODE_HANDLER(LVN_COLUMNCLICK, OnColumnClick)让控件本身来处理了,还是响应不了有可能的话,麻烦帮忙看下代码
      

  4.   

    m_fileReport.Create( m_dock, rcDefault, 0, 0, LVS_EX_FULLROWSELECT|LVS_REPORT );
    红的为创建时的父窗口,你在主框架里create的话,建义消息响应也放主框架里,还有注意创建时的父窗口设置,可用setParent实现
      

  5.   

    你晚上有时间吗?要不晚上发你吧,代码在家里,忘带公司了
    先给你邮箱发我MSN/QQ联系方式,不冒昧的话,麻烦加一下
      

  6.   

    下载: http://download.csdn.net/source/2266236
    修改了 class ATL_NO_VTABLE CDockingWindowImpl{}
    增加了 消息转发
    修改了 list创建 m_fileReport.Create( m_dock, rcDefault, 0, WS_CHILD | WS_VISIBLE | LVS_EX_FULLROWSELECT|LVS_REPORT );
    修改了 list实现 class CListFormImpl : 
    public CWindowImpl<CListFormImpl, CListViewCtrl/*, CListTraits*/>,