当点击了CListCtrl列标题后,对item进行排序后,列标题怎么加上一个向上或向上的图标,就像迅雷一样?? 当点击了CListCtrl列标题后,对item进行排序后,列标题怎么加上一个向上或向上的图标,就像迅雷一样?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个需要自绘制ListCtrl的HeaderCtrl,ListCtrl的表头信息是从CHeaderCtrl派生来的,所以自己定义一个从CHeaderCtrl继承的类,然后重载OnDrawItem函数里,如果在其一Item上按下了鼠标,则绘制相应的小箭头。 谢谢大家,自绘是不是比较复杂,有没有现成的绘制代码给我看看hgzx_2008"126.com 继承CHeaderCtrl 自己画 上下箭头是载入的资源 不需要自绘,以下为API代码:LVCOLUMN lvc; lvc.mask = LVCF_FMT|LVCF_IMAGE|LVCFMT_COL_HAS_IMAGES;lvc.fmt |= LVCFMT_IMAGE;lvc.iImage = nIconId;ListView_SetColumn(m_hWnd,iCol,&lvc);上下箭头是载入的资源,加入到IMAGELIST,nIconId就是通过ListView_SetImageList设置的IMGAGELIST的图标序号,iCol是列序号。 下面我是按上面写的,怎么不行啊,图标出现在文本中,而不是在标题上啊m_List.InsertColumn(0, "文件名", LVCFMT_LEFT, 150); m_List.InsertColumn(1, "文件大小", LVCFMT_LEFT, 180); m_List.InsertColumn(2, "压缩前大小", LVCFMT_RIGHT, 80); m_List.InsertColumn(3, "文件类型", LVCFMT_LEFT, 90); m_List.SetExtendedStyle(LVS_EX_INFOTIP); m_List.InsertItem(0,"ADSF"); m_List.InsertItem(1,"DSFA"); m_List.InsertItem(2,"SDRFAE"); //CHeaderCtrl *pHeaderCtrl=m_List.GetHeaderCtrl(); m_ImageList.Create(16,16,ILC_COLOR16 | ILC_MASK,0,4); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2)); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3)); ListView_SetImageList(m_List.m_hWnd,m_ImageList,LVSIL_SMALL); LVCOLUMN lvc; lvc.mask = LVCF_FMT|LVCF_IMAGE|LVCFMT_COL_HAS_IMAGES; lvc.fmt |= LVCFMT_IMAGE; lvc.iImage = 0; ListView_SetColumn(m_List.m_hWnd,1,&lvc); 现在能有图标,但是第一列上没有了文件是怎么回事,代码如下: m_List.InsertColumn(0, "文件名", LVCFMT_LEFT, 150); m_List.InsertColumn(1, "文件大小", LVCFMT_LEFT, 180); m_List.InsertColumn(2, "压缩前大小", LVCFMT_RIGHT, 80); m_List.InsertColumn(3, "文件类型", LVCFMT_LEFT, 90); m_List.SetExtendedStyle(LVS_EX_INFOTIP); m_List.InsertItem(0,"ADSF"); m_List.InsertItem(1,"DSFA"); m_List.InsertItem(2,"SDRFAE"); CHeaderCtrl *pHeaderCtrl=m_List.GetHeaderCtrl(); m_ImageList.Create(16,16,ILC_COLOR16 | ILC_MASK,0,4); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2)); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3)); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4)); pHeaderCtrl->SetImageList(&m_ImageList); HDITEM hdi = {0}; int nCount=pHeaderCtrl->GetItemCount(); for (int i=0; i < nCount; i++) { pHeaderCtrl->GetItem(i, &hdi); hdi.fmt |= HDF_IMAGE |HDF_BITMAP_ON_RIGHT; hdi.mask |= HDI_IMAGE | HDI_FORMAT; hdi.iImage = i; pHeaderCtrl->SetItem( i, &hdi); } pHeaderCtrl->SetImageList(&m_ImageList)后用我上面的代码试试,lvc.fmt不用或,直接赋值lvc.fmt = LVCFMT_IMAGE;...m_List.SetColumn(0,&lvc); 继承一个CButton后怎么用这个新类来定义对话框的按钮? 阻塞IO和非阻塞IO问题 WritePrivateProfileStruct函数写到INI文件中的数据是什么格式? 如何用图标句柄设置生成应用程序的图标 在线等 如何创建没有标题栏的窗口? 关于透明位图按钮的问题 请问在上海哪里可以学习VC? 取整怎么搞? 编程成功之路 如何通过自己的代码设置CPrintDialog TCP 向多个终端 同时 传输数据 MScomm空间的问题
给我看看
hgzx_2008"126.com
LVCOLUMN lvc;
lvc.mask = LVCF_FMT|LVCF_IMAGE|LVCFMT_COL_HAS_IMAGES;
lvc.fmt |= LVCFMT_IMAGE;
lvc.iImage = nIconId;
ListView_SetColumn(m_hWnd,iCol,&lvc);上下箭头是载入的资源,加入到IMAGELIST,nIconId就是通过ListView_SetImageList设置的IMGAGELIST的图标序号,iCol是列序号。
m_List.InsertColumn(0, "文件名", LVCFMT_LEFT, 150);
m_List.InsertColumn(1, "文件大小", LVCFMT_LEFT, 180);
m_List.InsertColumn(2, "压缩前大小", LVCFMT_RIGHT, 80);
m_List.InsertColumn(3, "文件类型", LVCFMT_LEFT, 90);
m_List.SetExtendedStyle(LVS_EX_INFOTIP);
m_List.InsertItem(0,"ADSF");
m_List.InsertItem(1,"DSFA");
m_List.InsertItem(2,"SDRFAE");
//CHeaderCtrl *pHeaderCtrl=m_List.GetHeaderCtrl(); m_ImageList.Create(16,16,ILC_COLOR16 | ILC_MASK,0,4);
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
ListView_SetImageList(m_List.m_hWnd,m_ImageList,LVSIL_SMALL); LVCOLUMN lvc;
lvc.mask = LVCF_FMT|LVCF_IMAGE|LVCFMT_COL_HAS_IMAGES;
lvc.fmt |= LVCFMT_IMAGE;
lvc.iImage = 0;
ListView_SetColumn(m_List.m_hWnd,1,&lvc);
m_List.InsertColumn(0, "文件名", LVCFMT_LEFT, 150);
m_List.InsertColumn(1, "文件大小", LVCFMT_LEFT, 180);
m_List.InsertColumn(2, "压缩前大小", LVCFMT_RIGHT, 80);
m_List.InsertColumn(3, "文件类型", LVCFMT_LEFT, 90);
m_List.SetExtendedStyle(LVS_EX_INFOTIP);
m_List.InsertItem(0,"ADSF");
m_List.InsertItem(1,"DSFA");
m_List.InsertItem(2,"SDRFAE");
CHeaderCtrl *pHeaderCtrl=m_List.GetHeaderCtrl(); m_ImageList.Create(16,16,ILC_COLOR16 | ILC_MASK,0,4);
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4)); pHeaderCtrl->SetImageList(&m_ImageList); HDITEM hdi = {0};
int nCount=pHeaderCtrl->GetItemCount();
for (int i=0; i < nCount; i++)
{
pHeaderCtrl->GetItem(i, &hdi);
hdi.fmt |= HDF_IMAGE |HDF_BITMAP_ON_RIGHT;
hdi.mask |= HDI_IMAGE | HDI_FORMAT;
hdi.iImage = i;
pHeaderCtrl->SetItem( i, &hdi);
}
...
m_List.SetColumn(0,&lvc);