如何向CListCtrl插入多列的数据? 我的CListCtrl有多列,用InsertItem只能向第一列即0列插入东西,如何向第二列,第三列,...插入东西? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 向第m行n列,m行0列必须先有 m_PlayList.SetItem(m,n,LVIF_TEXT,str1, 0, 0, 0, 0); 用InsertItem插入一行,然后用SetItemText插入其他列内容。SetItemText(行号,列号,内容) int nInsertPos = m_RevList.GetItemCount(); //获得要插入的行数 if(nInsertPos>=50) //如果行数过多,清空 { m_RecvSMList.DeleteAllItems(); nInsertPos = 0; } m_RevList.InsertItem(nInsertPos , ""); m_RevList.SetItemText(nInsertPos , 0 , (LPCTSTR)strCnt) ; //第一列 m_RevList.SetItemText(nInsertPos , 1 , pDeliverResp->sSrcTermID ) ; m_RevList.SetItemText(nInsertPos , 2 , pDeliverResp->sDestTermID); m_RevList.SetItemText(nInsertPos , 3 , pDeliverResp->sMsgContent ) ; m_RevList.SetItemText(nInsertPos , 4 , "FromAsiaInfo" ) ; //第四列//当然在初始化list时应该有列的划分 创建图形列表并和CListCtrl关联: m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192)); m_image_list.SetBkColor( GetSysColor( COLOR_WINDOW ) ); m_caller_list.SetImageList( &m_image_list, LVSIL_SMALL);为报表添加4列: char *szColumn[]={"昵称","IP地址","登陆时间","状态"}; int widths[]={100,98,70,55}; LV_COLUMN lvc; lvc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM; lvc.fmt=LVCFMT_LEFT; for(int i=0;i<4;i++) {//插入各列 lvc.pszText=szColumn[i]; lvc.cx=widths[i]; lvc.iSubItem=i; m_caller_list.InsertColumn(i,&lvc); }为报表添加两项,以附加方式添加: char* data[4]; data[0]="所有人"; data[1]="0.0.0.0"; data[3]="在线"; data[2]=new char; CTime now=CTime::GetCurrentTime(); CString temp = now.Format("%H:%M:%S"); data[2]=temp.GetBuffer(1); LV_ITEM lvi; lvi.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM; lvi.iSubItem=0; lvi.pszText=(char *)data[0]; lvi.iImage = 0; lvi.iItem=0; m_caller_list.InsertItem(&lvi); for (int j=0;j<4;j++) m_caller_list.SetItemText(count,j,data[j]); count++; lvi.iImage = 1; lvi.iItem=count; m_caller_list.InsertItem(&lvi); data[0]="cherami"; data[1]="127.0.0.1"; for (int n=0;n<4;n++) m_caller_list.SetItemText(count,n,data[n]); count++;设置报表的样式选中一整行:m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_FULLROWSELECT); 绘制表格:m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_GRIDLINES);带复选框:m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_CHECKBOXES);自动切换:m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_TRACKSELECT); right!!在InsertItem()完一行之后;SetItemText(行号,列号,内容); m_list.InsertColumn(0,"编号",LVCFMT_CENTER,rect.Width()/4); m_list.InsertColumn(1,"业务种别",LVCFMT_CENTER,rect.Width()*3/4); CWorkTypeSet worktypeset; try { worktypeset.m_strFilter = " DelFlag = false "; worktypeset.m_strSort = " TypeNo"; worktypeset.Open(); worktypeset.MoveFirst(); int iRow = 0; while(!worktypeset.IsEOF()) { m_list.InsertItem(iRow,worktypeset.m_TypeNo); m_list.SetItemText(iRow, 1,worktypeset.m_TypeName); worktypeset.MoveNext(); iRow ++; } worktypeset.Close(); } catch(CDBException *e) { e->Delete(); return false; } 可以这样:OXXAdd(){CListCtrl& listctrl=GetListCtrl();LVITEM l; l.mask=LVIF_TEXT; l.iItem=listctrl.GetItemCount(); l.iSubItem=0;////////当前行的第一列; l.pszText="w";///////内容 listctrl.InsertItem(&l);///////写当前行的第一列 l.iSubItem=1;;////////当前行的第二列 l.pszText="u"; listctrl.SetItem(&l););///////写当前行的第二列 l.iSubItem=1;;////////当前行的第三列 l.pszText="u"; listctrl.SetItem(&l););///////写当前行的第三列 ..} vc声卡输出声音录制 如何hook系统任务栏 一个基础问题!!! FindWindow得到句柄后,如何操作其上的一CEdit对象 只有远程机器的最高权限,如何在远程机器上执行一个程序 Help:有关VC和Directx 请教CGridCtrl的用法 CRichEditCtrl的滚动条怎么实现Flat风格 怎么获得当前的view类窗口句柄? 何为STL,ADT。。。?? 我有一些关于CCOMBOBOX控件的不明之处,现在很苦恼.那位大侠愿意在线指点一二的请加我.QQ(15831661) 有关 installshield for vc 的问题
m_PlayList.SetItem(m,n,LVIF_TEXT,str1, 0, 0, 0, 0);
SetItemText(行号,列号,内容)
if(nInsertPos>=50) //如果行数过多,清空
{
m_RecvSMList.DeleteAllItems();
nInsertPos = 0;
}
m_RevList.InsertItem(nInsertPos , "");
m_RevList.SetItemText(nInsertPos , 0 , (LPCTSTR)strCnt) ; //第一列
m_RevList.SetItemText(nInsertPos , 1 , pDeliverResp->sSrcTermID ) ;
m_RevList.SetItemText(nInsertPos , 2 , pDeliverResp->sDestTermID);
m_RevList.SetItemText(nInsertPos , 3 , pDeliverResp->sMsgContent ) ;
m_RevList.SetItemText(nInsertPos , 4 , "FromAsiaInfo" ) ; //第四列//当然在初始化list时应该有列的划分
m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192));
m_image_list.SetBkColor( GetSysColor( COLOR_WINDOW ) );
m_caller_list.SetImageList( &m_image_list, LVSIL_SMALL);
为报表添加4列:
char *szColumn[]={"昵称","IP地址","登陆时间","状态"};
int widths[]={100,98,70,55};
LV_COLUMN lvc;
lvc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc.fmt=LVCFMT_LEFT;
for(int i=0;i<4;i++) {//插入各列
lvc.pszText=szColumn[i];
lvc.cx=widths[i];
lvc.iSubItem=i;
m_caller_list.InsertColumn(i,&lvc);
}
为报表添加两项,以附加方式添加:
char* data[4];
data[0]="所有人";
data[1]="0.0.0.0";
data[3]="在线";
data[2]=new char;
CTime now=CTime::GetCurrentTime();
CString temp = now.Format("%H:%M:%S");
data[2]=temp.GetBuffer(1);
LV_ITEM lvi;
lvi.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
lvi.iSubItem=0;
lvi.pszText=(char *)data[0];
lvi.iImage = 0;
lvi.iItem=0;
m_caller_list.InsertItem(&lvi);
for (int j=0;j<4;j++) m_caller_list.SetItemText(count,j,data[j]);
count++;
lvi.iImage = 1;
lvi.iItem=count;
m_caller_list.InsertItem(&lvi);
data[0]="cherami";
data[1]="127.0.0.1";
for (int n=0;n<4;n++) m_caller_list.SetItemText(count,n,data[n]);
count++;设置报表的样式
选中一整行:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_FULLROWSELECT);
绘制表格:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_GRIDLINES);
带复选框:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_CHECKBOXES);
自动切换:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_TRACKSELECT);
SetItemText(行号,列号,内容);
m_list.InsertColumn(1,"业务种别",LVCFMT_CENTER,rect.Width()*3/4);
CWorkTypeSet worktypeset;
try
{
worktypeset.m_strFilter = " DelFlag = false ";
worktypeset.m_strSort = " TypeNo";
worktypeset.Open();
worktypeset.MoveFirst();
int iRow = 0;
while(!worktypeset.IsEOF())
{
m_list.InsertItem(iRow,worktypeset.m_TypeNo);
m_list.SetItemText(iRow, 1,worktypeset.m_TypeName);
worktypeset.MoveNext();
iRow ++;
}
worktypeset.Close();
}
catch(CDBException *e)
{
e->Delete();
return false;
}
OXXAdd()
{
CListCtrl& listctrl=GetListCtrl();
LVITEM l;
l.mask=LVIF_TEXT;
l.iItem=listctrl.GetItemCount();
l.iSubItem=0;////////当前行的第一列;
l.pszText="w";///////内容
listctrl.InsertItem(&l);///////写当前行的第一列 l.iSubItem=1;;////////当前行的第二列
l.pszText="u";
listctrl.SetItem(&l););///////写当前行的第二列 l.iSubItem=1;;////////当前行的第三列
l.pszText="u";
listctrl.SetItem(&l););///////写当前行的第三列
..
}