我想在列表控件的第二列加入图标,但是图片总是无法显示,求大神指导。

BOOL CamEditorDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();    m_ImageList.Create(16,16,TRUE|ILC_COLOR24,2,2);   
m_CamList.SetImageList(&m_ImageList,LVSIL_SMALL);//向列表控制中添加表列   
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_INFORMATION));    
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ERROR));//设置图象列表   

CRect rect; 
m_CamList.GetClientRect(&rect); 
m_CamList.SetExtendedStyle(m_CamList.GetExtendedStyle() | LVS_EX_FULLROWSELECT 
|LVS_EX_SUBITEMIMAGES);   
// 为列表视图控件添加三列   
m_CamList.InsertColumn(0, _T("Status"), LVCFMT_LEFT, rect.Width()*3/16, 1);   
m_CamList.InsertColumn(1, _T("Camera ID"), LVCFMT_LEFT,rect.Width()*5/16, 0);   
m_CamList.InsertColumn(2, _T("Data"), LVCFMT_LEFT, rect.Width()/4, 2);  
m_CamList.InsertColumn(3, _T("Sensor Type"), LVCFMT_LEFT, rect.Width()/4, 3);   m_CamList.InsertItem(0, _T("y"));   
m_CamList.SetItem(0, 1, LVIF_IMAGE, NULL, 1, 0, 0, 0);
m_CamList.SetItemText(0, 1, _T("geo"));    
m_CamList.SetItemText(0, 2, _T("01.01.70.10"));    
m_CamList.SetItemText(0, 3, _T("Aerial frame")); 
……
}
 

解决方案 »

  1.   

    ILC_COLOR24 这个参数换换试试,可能和你的ICON有关的,最好一致。
      

  2.   

    这个参数换了几次试试也还是这样,列表中留出了图片的位置但是就是不显示图片,这个Icon是系统自带的IDI_ERROR。
      

  3.   

    // 插入时可以指定项目图标在 ImageList 中的索引
    m_CamList.InsertItem(0, _T("y"), 0);
    m_CamList.InsertItem(1, _T("z"), 1);
      

  4.   

    2楼正解。另外Qt中可以在QTableWidget(对应于MFC中的CListCtrl)的第二列插入图标
      

  5.   

    强烈建议。
    不要这么动态加载。建议自己把ICON制作成BITMAP条放在资源文件中,根据BITMAP条的属性来Create具体代码请参见VS2008以后带BCG风格的多文档新建程序中有。LoadIcon问题多多。
      

  6.   

    嗯 确实是loadIcon的问题,加载系统图标要使用LoadStandardIcon才可以,问题解决了,多谢楼上各位