您的位置:首页 > 其它

MFC列表控件CListCtr使用方法

2016-10-14 23:22 309 查看
最近使用列表控制,显示图标和图片。范了一个错误,导致了图片一直没有显示出来。最后查明的原因是CImageList声明为局部变量,函数执行完成后,局部变量在内存中被释放,无法显示图标。

正确的CListCtr创建手顺如下:

一、在工具栏中托出更表控件,放在对话框中。

二、左键单击列表控制,选择追加变量,在向导中写入名称后,在头文件件自动生成成员变量名称。

//也可以通过getITEM取出CWND指针来操作列表控件。

三、 设置扩展风格以及一些初始化参数。

m_cList.ModifyStyle(0, LVS_REPORT);

m_cList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

//显示图标时,一定要设置LVS_EX_SUBITEMIMAGES

四、 生成表头。

m_cList.InsertColumn( 0, _T("列标题0"), LVCFMT_LEFT, 120 );

m_cList.InsertColumn( 1, _T("列标题1"), LVCFMT_LEFT, 100 );

五、 追加成全局的图片类。局部变量不可。

CImageList m_ImageList1;//局部不可

m_ImageList1.Create( 80,80,ILC_MASK|ILC_COLOR32, 5, 5 );

/// 0号图片

m_ImageList1.Add( AfxGetApp()->LoadIcon(IDR_MAINFRAME) );

/// 1号图片

m_ImageList1.Add( AfxGetApp()->LoadIcon(XXXXXXXXXXXX) );

//图片列表类对象与列表控件绑定

m_cList.SetImageList( &m_ImageList1, LVSIL_SMALL );

六、动态生成和追加。

LVITEM Itemattr;

Itemattr.iItem=i; //指定哪一行

Itemattr.mask = LVIF_IMAGE ;

///// 指定上面关联好的0号图片

Itemattr.iImage =0; //显示不同的图标时,可以把一个int 变量赋给这个属性值

//创建指定行 Itemattr.iItem=i;

m_cList.InsertItem (&Itemattr);

m_cList.SetItemText( 0, 1, _T("0 行 1 列") );

m_cList.SetItemText( 1, 1, _T("1行 1 列") );

其它的常用方法,可以参见MSDN即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: