ListCtrl以及一个派生类

1.     列表视图的视图风格 :

LVS_ICON;    LVS_SMALLICON;      LVS_LIST;           LVS_REPORT;

修改视图风格有三种方法:

1. 在属性对话框里面修改;

2. ModifyStyle() 修改; ModifyStyle(LVS_TYPEMASK, uiViewStyle);

3. 重载PreCreateWindow 函数并修改cs.style 结构

 

2.        获取列表视图列大小 GetColumnWidth(iCurrCol);// 获取列大小

和设置列的大小

SetColumnWidth(int nCol,int cx); //cx 可以用一下两个常量之一

1.   LVSCW_AUTOSIZE;             // 根据列中最宽的文本设置列

2.   LVSCW_AUTOSIZE_USEHEADER;       // 列的大小足够显示列标题文本

 

3.      禁止或允许列表视图重绘 SetRedraw(FALSE);// 在重定列表视图大小时停止绘制

4.        给列表视图添加列 InsertColumn(), 列的对齐方式有以下几种

LVCFMT_LEFT;     LVCFMT_RIGHT;       LVCFMT_CENTER;

5.      插入列表视图项:InsertItem()SetItemText();

6.      创建和关联CImageList 对象:

m_imageLarge.Create(IDB_BITMAP, 20, 0, RGB(255,255,255));

    listCtrl.SetImageList(&m_imageLarge, LVSIL_NORMAL);

    // small icon image list

    m_imageSmall.Create(IDB_BITMAP, 20, 0, RGB(255,255,255));

listCtrl.SetImageList(&m_imageSmall, LVSIL_SMALL);

 

 

 

 

#pragma once

//CMyListCtrl.h 定义文件

struct COLUMNINFO {

    // 插入列表视图时候的数据结构

    LPTSTR lptstr;      // 列名

    UINT uiFormat;      // 列显示格式

    int iLen;          // 列长度

};

 

// CMyListCtrl

 

class CMyListCtrl : public CListCtrl

{

    DECLARE_DYNAMIC(CMyListCtrl)

 

public :

    CMyListCtrl();

    virtual ~CMyListCtrl();

 

protected :

    DECLARE_MESSAGE_MAP()

public :

    void InitColumn(COLUMNINFO* columninfo, int iSize);

    void SizeAllColumns(void );

    void SetView(UINT uiViewStyle);

};

inline void CMyListCtrl::SetView(UINT uiViewStyle)

{

    ModifyStyle(LVS_TYPEMASK, uiViewStyle);

    // 设置列表视图的风格,LVS_ICON;LVS_SMALLICON;LVS_LIST;LVS_REPORT 四种;

}

 

 

 

// MyListCtrl.cpp : 实现文件

//

 

#include "stdafx.h"

#include "TreeCtrl.h"

#include "MyListCtrl.h"

#include "./mylistctrl.h"

 

 

// CMyListCtrl

 

IMPLEMENT_DYNAMIC(CMyListCtrl, CListCtrl)

CMyListCtrl::CMyListCtrl()

{

}

 

CMyListCtrl::~CMyListCtrl()

{

}

 

 

BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)

END_MESSAGE_MAP()

 

 

 

// CMyListCtrl 消息处理程序

 

 

void CMyListCtrl::InitColumn(COLUMNINFO* columninfo, int iSize)

{

    for (int i=0;i<iSize;++i)

    {

        InsertColumn(i,columninfo[i].lptstr,

            columninfo[i].uiFormat,columninfo[i].iLen);

    }  

}

 

void CMyListCtrl::SizeAllColumns(void )

// 调整树视图

{

    CHeaderCtrl*pHead=GetHeaderCtrl();

    // 获取列头

 

    ASSERT(pHead);

    if (pHead)

    {

        SetRedraw(FALSE);       // 在重定列表视图大小时停止绘制

        for (int iCurrCol=0;iCurrCol<pHead->GetItemCount();++iCurrCol)

        {

            SetColumnWidth(iCurrCol,LVSCW_AUTOSIZE);

            //LVSCW_AUTOSIZE 根据列中最大的文本设置列大小

            int nCurrWith=GetColumnWidth(iCurrCol);// 获取列大小

            SetColumnWidth(iCurrCol,LVSCW_AUTOSIZE_USEHEADER);

            //LVSCW_AUTOSIZE_USEHEADER 根据列标题大小设置列大小

 

            int nColHdrWidth=GetColumnWidth(iCurrCol);

            SetColumnWidth(iCurrCol,max(nColHdrWidth,nCurrWith));

        }

        SetRedraw();            // 让其可以重新绘制

        Invalidate();

    }      

   

}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值