源代码如下
其中m_wndTask是一个listctrlif (!m_wndTask.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_SHOWSELALWAYS,CRect(0,0,0,0),this,IDC_TASKLIST))
{
TRACE0("创建列表失败");
return -1;
};
m_wndTask.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
ListView_SetExtendedListViewStyleEx(m_wndTask.GetSafeHwnd(),LVS_EX_LABELTIP,LVS_EX_LABELTIP);//当某一项太长被遮住的话,当鼠标移到这一项上时会以Hint的形式把这一项的内容显示出来 m_wndTask.ShowWindow(SW_SHOW);
CBitmap bm;
bm.LoadBitmap(IDR_MAINFRAME);
// Create image list and set in toolbar.
// Must use ILC_COLOR8 for 256-color images!
//
CImageList * pImalist;
pImalist = new CImageList;
pImalist->Create(22,20, ILC_COLOR24|ILC_MASK, 0, 22);
pImalist->Add(&bm,RGB(192,192,192));
m_wndTask.SetImageList(pImalist,LVSIL_NORMAL);
int nCol;
LVCOLUMN lvCol;
lvCol.mask = LVCF_IMAGE|LVCF_WIDTH|LVCF_SUBITEM;
lvCol.fmt = LVCFMT_IMAGE;
lvCol.iSubItem =0;
lvCol.iImage = 1;
lvCol.cx = 30;
nCol = m_wndTask.InsertColumn(0,&lvCol);
m_wndTask.InsertColumn(1,"任务名",LVCFMT_LEFT,300);
m_wndTask.InsertColumn(2,"活动线程数",LVCFMT_LEFT,100);
m_wndTask.InsertColumn(3,"注释",LVCFMT_LEFT,200);上面这段应该是加列的标题图标的吧》? 没成功LVITEM lviItem;
lviItem.mask = LVIF_IMAGE;
lviItem.iItem = 1;
lviItem.iSubItem = 0;
lviItem.iImage = 2;
nItem = m_wndTask.InsertItem(&lviItem);
m_wndTask.SetItemText(nItem,1,szTaskName);这一段应该是加每行的图标的吧 也没成功??
为什么?? 哪位高手指点一二 感激不尽啊
其中m_wndTask是一个listctrlif (!m_wndTask.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_SHOWSELALWAYS,CRect(0,0,0,0),this,IDC_TASKLIST))
{
TRACE0("创建列表失败");
return -1;
};
m_wndTask.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
ListView_SetExtendedListViewStyleEx(m_wndTask.GetSafeHwnd(),LVS_EX_LABELTIP,LVS_EX_LABELTIP);//当某一项太长被遮住的话,当鼠标移到这一项上时会以Hint的形式把这一项的内容显示出来 m_wndTask.ShowWindow(SW_SHOW);
CBitmap bm;
bm.LoadBitmap(IDR_MAINFRAME);
// Create image list and set in toolbar.
// Must use ILC_COLOR8 for 256-color images!
//
CImageList * pImalist;
pImalist = new CImageList;
pImalist->Create(22,20, ILC_COLOR24|ILC_MASK, 0, 22);
pImalist->Add(&bm,RGB(192,192,192));
m_wndTask.SetImageList(pImalist,LVSIL_NORMAL);
int nCol;
LVCOLUMN lvCol;
lvCol.mask = LVCF_IMAGE|LVCF_WIDTH|LVCF_SUBITEM;
lvCol.fmt = LVCFMT_IMAGE;
lvCol.iSubItem =0;
lvCol.iImage = 1;
lvCol.cx = 30;
nCol = m_wndTask.InsertColumn(0,&lvCol);
m_wndTask.InsertColumn(1,"任务名",LVCFMT_LEFT,300);
m_wndTask.InsertColumn(2,"活动线程数",LVCFMT_LEFT,100);
m_wndTask.InsertColumn(3,"注释",LVCFMT_LEFT,200);上面这段应该是加列的标题图标的吧》? 没成功LVITEM lviItem;
lviItem.mask = LVIF_IMAGE;
lviItem.iItem = 1;
lviItem.iSubItem = 0;
lviItem.iImage = 2;
nItem = m_wndTask.InsertItem(&lviItem);
m_wndTask.SetItemText(nItem,1,szTaskName);这一段应该是加每行的图标的吧 也没成功??
为什么?? 哪位高手指点一二 感激不尽啊
加入变量。CImageList m_imgSmall;
在InitiaUpdate()
m_imgSmalll.Create(IDB_BITMAP,16,0,RGB(255,0,0));
m_List.SetImageList(&m_imgSmall,LVSIL_SMALL);
lviItem.mask = LVIF_IMAGE;
lviItem.iItem = 1;
lviItem.iSubItem = 0;
lviItem.iImage = 2;
nItem = m_wndTask.InsertItem(&lviItem);
m_wndTask.SetItemText(nItem,1,szTaskName);
这段语句有病,可能根本显示不出来吧?
bm.LoadBitmap(IDR_MAINFRAME);
// Create image list and set in toolbar.
// Must use ILC_COLOR8 for 256-color images!
//
CImageList * pImalist;
pImalist = new CImageList;
pImalist->Create(22,20, ILC_COLOR24|ILC_MASK, 0, 22);
pImalist->Add(&bm,RGB(192,192,192));这一段直接用CImageList::Create来加载IDR_MAINFRAME位图资源。
CImageList * pImalist;
pImalist = new CImageList;
pImalist ->(MAKEINTRESOURCE(IDR_MAINFRAME),22, 0,RGB(192,192,192) );
楼上说得很对,可以在CImageList::Create中直接指定位图创建图标。也可以用CImageList::AddIcon来加入图标。这样就会有图标了。