文章类型: VC&C++
关键词: VC,CListCtrl,列宽,固定
内容摘要: 将CListCtrl的列宽固定

在VC中将CListCtrl的列宽固定

2017/11/17 8:31:10    来源:apple    阅读:

自定义类"CMyListCtrl"的头文件中的代码如下:

#pragma once
#include "HeaderCtrlEx.h"
// CMyListCtrl

class CMyListCtrl : public CListCtrl
{
    DECLARE_DYNAMIC(CMyListCtrl)

public:
    CMyListCtrl();
    virtual ~CMyListCtrl();

protected:
    DECLARE_MESSAGE_MAP()
    virtual void PreSubclassWindow();

public:
    CHeaderCtrlEx m_ctrlHeader;
};
/****************************************CMyListCtrl.h****************************************************/

自定义类"CMyListCtrl"的cpp文件中的代码如下:

/****************************************CMyListCtrl.cpp****************************************************/
//子类化CHeaderCtrlEx
void CMyListCtrl::PreSubclassWindow()
{
    // TODO: Add your specialized code here and/or call the base class
    CListCtrl::PreSubclassWindow();
    m_ctrlHeader.SubclassWindow(::GetDlgItem(m_hWnd,0));
}
/****************************************CMyListCtrl.cpp****************************************************/

集成父类"CHeaderCtrl"的自定义子类CHeaderCtrlEx的头文件如下:

/****************************************CHeaderCtrl.h****************************************************/
#pragma once
// CHeaderCtrlEx

class CHeaderCtrlEx : public CHeaderCtrl
{
    DECLARE_DYNAMIC(CHeaderCtrlEx)

public:
    CHeaderCtrlEx();
    virtual ~CHeaderCtrlEx();

protected:
    DECLARE_MESSAGE_MAP()
public:
    virtual BOOL OnChildNotify(UINT msg,WPARAM wp,LPARAM lp,LRESULT* pRes);
};
/****************************************CHeaderCtrl.h****************************************************/

对应的cpp文件的代码如下:

/****************************************CHeaderCtrl.cpp****************************************************/
//固定列宽
BOOL CHeaderCtrlEx::OnChildNotify(UINT msg,WPARAM wp,LPARAM lp,LRESULT* pRes)   
{   
 NMHDR& nmh = *(NMHDR*)lp;
if (nmh.code == HDN_BEGINTRACKA || nmh.code == HDN_BEGINTRACKW) {
if (m_bLocked)
return *pRes=TRUE; // eat message to disallow sizing
}
else if(nmh.code == HDN_DIVIDERDBLCLICKA || nmh.code == HDN_DIVIDERDBLCLICKW)
{
if (m_bLocked)
return *pRes=TRUE; // eat message to disallow sizing
}
    return   CHeaderCtrl::OnChildNotify(msg,wp,lp,pRes);   
}


或者用下面的方法:

CHeaderCtrl* pHeaderCtrl = (CHeaderCtrl*)m_ListCtrl.GetHeaderCtrl();   

pHeaderCtrl->EnableWindow( FALSE );

↑ 上一篇文章:在VC的MFC中的ListCtrl控件的列宽固定不可变 关键词:VC,MFC,ListCtrl,控件,列宽,固定,不可变 发布日期:2017/11/17 8:22:14
↓ 下一篇文章:VC中设置CListCtrl单元格的字体及背景颜色 关键词:VC,设置,CListCtrl,单元格,字体,背景,颜色, 发布日期:2017/11/17 8:35:09
相关文章:
在VC的MFC中的ListCtrl控件的列宽固定不可变 关键词:VC,MFC,ListCtrl,控件,列宽,固定,不可变 发布日期:2017-11-17 08:22
VC中CListCtrl删除所有的列 关键词:VC,CListCtrl,删除,所有列, 发布日期:2017-10-26 15:56
VC中设置CListCtrl单元格的字体及背景颜色 关键词:VC,设置,CListCtrl,单元格,字体,背景,颜色, 发布日期:2017-11-17 08:35
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......