列表控件的这个调节列大小的能禁止调节吗?MFC对话框的程序 如何做?

解决方案 »

  1.   

    响应列表控件的HDN_BEGINTRACK通知消息,直接返回TRUE。
      

  2.   

    函数声明 返回是void  我返回true 编译报错!  是不是那里做错啦啊?说具体点好吗?
    void cpp::OnBegintrackList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
    // TODO: Add your control notification handler code here
    //return true;
    *pResult = 0;
    }
      

  3.   

    所有HDN_类消息我都设置断点试过啦!没有一个是的!
      

  4.   

    本帖最后由 Mackz 于 2009-01-08 22:15:20 编辑
      

  5.   

    我在对话框类中为列表控件添加HDN_BEGINTRACK消息  *pResult = 1;处理啦没用!
    我新建啦个类添加HDN_BEGINTRACK消息 *pResult = 1; 关联啦控件变量! 处理啦没用!
    我晕!我那里错啦啊?
      

  6.   

    ListCtrl的父窗口是CDlgTestDlg吗?
      

  7.   

    说下步骤! 帮看看那里错啦!
    (1) 创建MFC对话框程序 在对话框的视图中添加列表控件
    (2) 创建新类派生于CListCtrl   class NewLC : public CListCtrl
    (3) 为对话框上的列表控件关联成员变量,选择NewLC类!
    (4) 在NewLC类 中添加HDN_BEGINTRACK消息  设置 *pResult = 1;      
    结果是: 还能调节宽度!于是我就在NewLC类中添加所有HDN_*** 消息  设置断点!   进入调试  调节改变列宽度! 什么都没响应!
    我在对话框的类中也做啦!没反应! 我又在NewLC类中添加个LVN_COLUMNCLICK试试  点击下列表头! 有响应 进入啦LVN_COLUMNCLICK响应函数
      

  8.   

    用向导添加的代码:
    class CMyListCtrl : public CListCtrl
    ...BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
    ON_NOTIFY(HDN_BEGINTRACKA, 0, &CMyListCtrl::OnHdnBegintrack)
    ON_NOTIFY(HDN_BEGINTRACKW, 0, &CMyListCtrl::OnHdnBegintrack)
    END_MESSAGE_MAP()void CMyListCtrl::OnHdnBegintrack(NMHDR *pNMHDR, LRESULT *pResult)
    {
    LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码
    *pResult = 1;
    }
    试验无误,和你的步骤一样;不知道为什么,VS2008添加的消息映射分别为带A的和带W的,手动修改消息映射为
    BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
    ON_NOTIFY(HDN_BEGINTRACK, 0, &CMyListCtrl::OnHdnBegintrack)
    END_MESSAGE_MAP()
    仍然可以。你最好贴出所有代码,或者发给我:[email protected]
      

  9.   

    我用MFC向导添加HDN_BEGINTRACKA消息 自动添加啦ON_NOTIFY_REFLECT 而不是ON_NOTIFY
    我把改为ON_NOTIFY就可以禁止掉啦?这是什么原因?