VC++2005中使用ListCtrl如何和CImagelist关联显示列表项图标
VC++2005中使用listctrl控件只能显示出列表项的文字,而不知如何与CImagelist关联显示列表项图标,我建的是对话框类的MFC应用程序,在对话框上添加的L...
VC++2005中使用listctrl控件只能显示出列表项的文字,而不知如何与CImagelist关联显示列表项图标,我建的是对话框类的MFC应用程序,在对话框上添加的ListCtrl,我的程序代码如下:
BOOL CListdlg::OnInitDialog()
{
CDialog::OnInitDialog();
CImageList Licon,Sicon;
Licon.Create(32,32,ILC_COLOR8|ILC_MASK,1,1);
Sicon.Create(16,16,ILC_COLOR8|ILC_MASK,1,1);
m_listctr.SetImageList(&Licon,LVSIL_NORMAL);
m_listctr.SetImageList(&Sicon,LVSIL_SMALL);
m_listctr.InsertItem(0,TEXT("电脑"));
m_listctr.InsertItem(0,TEXT("电话"));
m_listctr.InsertItem(0,TEXT("书籍"));
m_listctr.InsertItem(0,TEXT("钢笔"));
return TRUE; }
运行后没有图标,只有文字
希望显示如图所示的MFC图标,请指教!谢谢!
hibok2,你好!我按你写的试了还是不行,我怀疑我的图标没取到,或是取到后没加到Imagelist里,或是不知道它的Image索引号是不是为0,我再贴一下我的源程序,你帮我看一下啊!谢谢!
BOOL CListdlg::OnInitDialog()
{// TODO: 在此添加额外的初始化
CDialog::OnInitDialog();
CImageList Licon,Sicon;
Licon.Create(32,32,ILC_COLOR8|ILC_MASK,1,1);
Sicon.Create(16,16,ILC_COLOR8|ILC_MASK,1,1);
Licon.Add(AfxGetApp()->LoadIconW(IDR_MAINFRAME));
Sicon.Add(AfxGetApp()->LoadIconW(IDR_MAINFRAME));
m_listctr.SetImageList(&Licon,LVSIL_NORMAL);
m_listctr.SetImageList(&Sicon,LVSIL_SMALL);
m_listctr.InsertItem(0,TEXT("电脑"),0);
m_listctr.InsertItem(0,TEXT("电话"),0);
m_listctr.InsertItem(0,TEXT("书籍"),0);
m_listctr.InsertItem(0,TEXT("钢笔"),0);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
} 展开
BOOL CListdlg::OnInitDialog()
{
CDialog::OnInitDialog();
CImageList Licon,Sicon;
Licon.Create(32,32,ILC_COLOR8|ILC_MASK,1,1);
Sicon.Create(16,16,ILC_COLOR8|ILC_MASK,1,1);
m_listctr.SetImageList(&Licon,LVSIL_NORMAL);
m_listctr.SetImageList(&Sicon,LVSIL_SMALL);
m_listctr.InsertItem(0,TEXT("电脑"));
m_listctr.InsertItem(0,TEXT("电话"));
m_listctr.InsertItem(0,TEXT("书籍"));
m_listctr.InsertItem(0,TEXT("钢笔"));
return TRUE; }
运行后没有图标,只有文字
希望显示如图所示的MFC图标,请指教!谢谢!
hibok2,你好!我按你写的试了还是不行,我怀疑我的图标没取到,或是取到后没加到Imagelist里,或是不知道它的Image索引号是不是为0,我再贴一下我的源程序,你帮我看一下啊!谢谢!
BOOL CListdlg::OnInitDialog()
{// TODO: 在此添加额外的初始化
CDialog::OnInitDialog();
CImageList Licon,Sicon;
Licon.Create(32,32,ILC_COLOR8|ILC_MASK,1,1);
Sicon.Create(16,16,ILC_COLOR8|ILC_MASK,1,1);
Licon.Add(AfxGetApp()->LoadIconW(IDR_MAINFRAME));
Sicon.Add(AfxGetApp()->LoadIconW(IDR_MAINFRAME));
m_listctr.SetImageList(&Licon,LVSIL_NORMAL);
m_listctr.SetImageList(&Sicon,LVSIL_SMALL);
m_listctr.InsertItem(0,TEXT("电脑"),0);
m_listctr.InsertItem(0,TEXT("电话"),0);
m_listctr.InsertItem(0,TEXT("书籍"),0);
m_listctr.InsertItem(0,TEXT("钢笔"),0);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
} 展开
1个回答
展开全部
你没指定Image索引号。
把:
m_listctr.InsertItem(0,TEXT("电脑"));
m_listctr.InsertItem(0,TEXT("电话"));
m_listctr.InsertItem(0,TEXT("书籍"));
m_listctr.InsertItem(0,TEXT("钢笔"));
改为:
int imageIndex = 0; //图标索引号
m_listctr.InsertItem(0,TEXT("电脑"), imageIndex );
m_listctr.InsertItem(0,TEXT("电话"), imageIndex );
m_listctr.InsertItem(0,TEXT("书籍"), imageIndex );
m_listctr.InsertItem(0,TEXT("钢笔"), imageIndex );
补充:
刚才查了一下MSDN。设置给CListCtrl的CImageList要采用动态申请的方式,并且CListCtrl会负责释放CImageList的内存。
改为如下代码:
CImageList *Licon,*Sicon;
Licon = new CImageList();
Sicon = new CImageList();
Licon->Create(32,32,ILC_COLOR8|ILC_MASK,1,1);
Sicon->Create(16,16,ILC_COLOR8|ILC_MASK,1,1);
Licon->Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
Sicon->Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
m_listctr.SetImageList(Licon,LVSIL_NORMAL);
m_listctr.SetImageList(Sicon,LVSIL_SMALL);
m_listctr.InsertItem(0,TEXT("电脑"),0);
m_listctr.InsertItem(0,TEXT("电话"),0);
m_listctr.InsertItem(0,TEXT("书籍"),0);
m_listctr.InsertItem(0,TEXT("钢笔"),0);
上述代码我已经调试通过。
把:
m_listctr.InsertItem(0,TEXT("电脑"));
m_listctr.InsertItem(0,TEXT("电话"));
m_listctr.InsertItem(0,TEXT("书籍"));
m_listctr.InsertItem(0,TEXT("钢笔"));
改为:
int imageIndex = 0; //图标索引号
m_listctr.InsertItem(0,TEXT("电脑"), imageIndex );
m_listctr.InsertItem(0,TEXT("电话"), imageIndex );
m_listctr.InsertItem(0,TEXT("书籍"), imageIndex );
m_listctr.InsertItem(0,TEXT("钢笔"), imageIndex );
补充:
刚才查了一下MSDN。设置给CListCtrl的CImageList要采用动态申请的方式,并且CListCtrl会负责释放CImageList的内存。
改为如下代码:
CImageList *Licon,*Sicon;
Licon = new CImageList();
Sicon = new CImageList();
Licon->Create(32,32,ILC_COLOR8|ILC_MASK,1,1);
Sicon->Create(16,16,ILC_COLOR8|ILC_MASK,1,1);
Licon->Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
Sicon->Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
m_listctr.SetImageList(Licon,LVSIL_NORMAL);
m_listctr.SetImageList(Sicon,LVSIL_SMALL);
m_listctr.InsertItem(0,TEXT("电脑"),0);
m_listctr.InsertItem(0,TEXT("电话"),0);
m_listctr.InsertItem(0,TEXT("书籍"),0);
m_listctr.InsertItem(0,TEXT("钢笔"),0);
上述代码我已经调试通过。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询