在ListCtrl的report模式中,给“非第一列”加入一个图片(bmp 或 icon),该怎么弄?

张佩 2005-03-03 08:19:18
rt
...全文
217 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
张佩 2005-03-03
  • 打赏
  • 举报
回复
可以的。
handsomerun 2005-03-03
  • 打赏
  • 举报
回复
在使用report模式下,还能把图标显示出来吗??我那天做了一个,类似于 laiyiling(陌生人!@#$%^&*) 那样的做法,SetImageList后再insertitem这样做的,但是我是用icon模式的,然后显示出来,试了试,如果用report模式的话,好像是没法显示出来的!
guangsan 2005-03-03
  • 打赏
  • 举报
回复
在codeproject上有个例子,

http://www.codeproject.com/listctrl/thumbnail.asp

http://www.codeproject.com/listctrl/listcheckbox.asp

Kudeet 2005-03-03
  • 打赏
  • 举报
回复
一个简单的程序片段:
imglist 是对话框的成员变量, m_ListCtrl是对话框的控件.

imglist.Create(32,16,ILC_COLOR,8,4);
imglist.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
....
imglist.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));

m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT |LVS_EX_SUBITEMIMAGES);
m_ListCtrl.SetImageList(&imglist,LVSIL_SMALL);
m_ListCtrl.InsertColumn( 0 ,"Col1",LVCFMT_CENTER, 40 );
m_ListCtrl.InsertColumn( 1 ,"Col2",LVCFMT_LEFT, 50);
m_ListCtrl.InsertItem(0,"",0);
...
m_ListCtrl.InsertItem(5,"",5);

m_ListCtrl.SetItem( 0 , 1,LVIF_TEXT,"111",0,0,0,0);
m_ListCtrl.SetItem( 1 , 1,LVIF_IMAGE,"222",1,0,0,0);
m_ListCtrl.SetItem( 2 , 1,LVIF_TEXT,"333",2,0,0,0);
m_ListCtrl.SetItem( 3 , 1,LVIF_IMAGE,"444",3,0,0,0);
m_ListCtrl.SetItem( 4 , 1,LVIF_TEXT,"555",4,0,0,0);
m_ListCtrl.SetItem( 5 , 1,LVIF_IMAGE,"666",5,0,0,0);

如果要把第一列设置为文字,其他任意列设置为图标,在以上程序下加入:
int Order[2];
Order[0] = 1;
Order[1] = 0;
m_ListCtrl.SetColumnOrderArray(2,Order);
快乐鹦鹉 2005-03-03
  • 打赏
  • 举报
回复
缺省的listctrl不提供该种功能。只能进行自己绘制。
smileconfess 2005-03-03
  • 打赏
  • 举报
回复
在.cpp文件的OnInitialUpdate()函数中加上::SendMessage(theCtrl.GetSafeHwnd(), LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES);
在InserItem()函数完成之后,加上theCtrl.SetItem(i, j, LVIF_IMAGE|LVIF_TEXT|LVIF_STATE, NULL, 3, NULL, NULL, 0);//第五个参数就是图标的序号。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧