天末凉风

有梦最美,希望相随!

导航

WindowsMobile开发小结———— CListCtrl用法

一、CListCtrl在MFC中共有四种view可供选择,每种view用不同的方式显示列表的内容。

· 图标视图(Icon view)
每一项以全尺寸图标(32×32像素)出现,下面有一个标签。用户可在列表视图窗口拖动项到任意位置。
· 小图标视图(Small icon view)
视图每一项以小图标(16×16像素)出现,右边有一个标签。用户可在列表视图窗口拖动项到任意位置。
· 列表视图(List view)
每一项以小图标出现,下面有一个标签。项按列排列,不能拖动到列表视图窗口的任何位置。
· 报表视图(Report view)
每一项在本行上出现,右边有排列成列的附加信息。最左边的列包含小图标和标签,下一列包含应用指定的子项。

二、使用List Control控件有两种方法。
1.在对话框体上添加,直接从工具箱里点List Control拖拉即可,在属性里view项设置视图类型。
CListCtrl *pMyList;
pMyList = (CListCtrl*)GetDlgItem(IDC_LIST);
2.无对话框体,直接显示在程序初始视图窗口里面。这时,如果基于CListView的类,声明变量,然后调用CListView类里的成员函数GetListCtrl()。
CListCtrl *pMyList;
pMyList = &GetListCtrl();
pMyList->ModifyStyle(0,LVS_ICON);//设置为视图类型  

三、其它设置。如显示样式、位置、背景等。

设置显示样式:网格,选中时整行高亮
pMyList->SetExtendedStyle( LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES );

如要固定每列不能用鼠标拖动,添加如下代码:

CHeaderCtrl* pHeaderCtrl = (CHeaderCtrl*)pMyList->GetHeaderCtrl();
pHeaderCtrl->EnableWindow( FALSE ) ;

四、之后可以插入行、列。下例为Report view 类型的List,除第一行为标题,其余每行的第一列为item项,第二列为subitem。
pMyList->InsertColumn(0,_T("节次"),LVCFMT_CENTER,iColumnWidth);
pMyList->InsertColumn(1,_T("课程"),LVCFMT_CENTER ,iColumnWidth);

pMyList->InsertItem(0,_T("第一节"));
pMyList->SetItemText(0,1,_T("语文"));

pMyList->InsertItem(1,_T("第二节"));
pMyList->SetItemText(1,1,_T("数学"));

五、一般都要为List加图标的,可以加bitmap或者icon图标。

1.Bitmap图标。

CBitmap *pBitmap=new CBitmap;
CImageList *pImageList=new CImageList;

pBitmap->LoadBitmap(IDB_BITMAP1);
pImageList->Create (48,48,ILC_COLOR,7,2);

pImageList->Add(PBitmap,RGB(0,0,0));

pListView->SetImageList(pImageList,LVSIL_NORMAL);//ICON 视图加上这行

然后pMyList->InsertItem(0,_T("第一节")),改为pMyList->InsertItem(0,_T("第一节"),iImage),iImage为ImageList中的图片编号


2.当然也可添加ICON图标,如下。

//新建用来存放图标的列表
CImageList* imageList = new CImageList();
imageList->Create(32,32,ILC_COLORDDB|ILC_MASK,7,7);

//从资源加载图标
HICON   hIcon   =   ::LoadIcon(AfxGetResourceHandle(),   MAKEINTRESOURCE(IDI_ICON));
imageList->Add(hIcon);

获取当前选中列表项编号:int i =pMyList->GetSelectionMark();

posted on 2008-09-19 00:11  天末凉风  阅读(445)  评论(0编辑  收藏  举报