1.1 列表视图的视图风格:
LVS_ICON; LVS_SMALLICON; LVS_LIST; LVS_REPORT;
修改视图风格有三种方法:
1.在属性对话框里面修改;
2.用ModifyStyle()修改; ModifyStyle(LVS_TYPEMASK, uiViewStyle);
3.重载PreCreateWindow函数并修改cs.style结构
1.2 获取列表视图列大小 GetColumnWidth(iCurrCol);//获取列大小和设置列的大小
SetColumnWidth(int nCol,int cx); //cx可以用一下两个常量之一
1. LVSCW_AUTOSIZE; //根据列中最宽的文本设置列
2. LVSCW_AUTOSIZE_USEHEADER; //列的大小足够显示列标题文本
1.3 禁止或允许列表视图重绘SetRedraw(FALSE);//在重定列表视图大小时停止绘制
1.4 给列表视图添加列InsertColumn(),列的对齐方式有以下几种
LVCFMT_LEFT; LVCFMT_RIGHT; LVCFMT_CENTER;
1.5 插入列表视图项:InsertItem()和SetItemText();
1.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();
}
}
|