
POSITION pos = m_clistctrl GetFirstSelectedItemPosition();
if(pos!=NULL)
{
int Item = m_clistctrl GetNextSelectedItem(pos);
CString listval= m_clistctrl GetItemText(Item,1);
}
注意GetItemText()的用法,获取第几列,在后面输入数字是几。
我给你列出来
//////////////////////////////////////////////////////////////////////////
// 增加背景色彩
void CXXSortListCtrl::OnCustomDraw(NMHDR pNMHDR, LRESULT pResult)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
switch(lplvcd->nmcddwDrawStage)
{
case CDDS_PREPAINT:
pResult = CDRF_NOTIFYSUBITEMDRAW; // ask for subitem notifications
break;
case CDDS_ITEMPREPAINT: // ask for subitem notifications
pResult = CDRF_NOTIFYSUBITEMDRAW;
if(GetExtendedStyle() & LVS_EX_CHECKBOXES)// if we have a checkbox style,
{ // forget about subitem notifications
pResult = CDRF_DODEFAULT;
int iRow = lplvcd->nmcddwItemSpec;
if((iRow & 1))// && (iCol & 1)) // 单行
{
lplvcd->clrTextBk =m_clrLine; // RGB(255, 0, 0);
lplvcd->clrText =m_clrText; // RGB(255, 255, 0);
pResult = CDRF_NEWFONT;
}
else // 双行
{
lplvcd->clrTextBk =m_clrTwoLine; // RGB(255, 0, 0);
lplvcd->clrText =m_clrText; // RGB(255, 255, 0);
pResult = CDRF_NEWFONT;
}
// 注意 :)
// 这里就是你要更改的地方
if(GetCheck(iRow)) // highlight checked rows
{
//lplvcd->clrTextBk =m_clrChkText; // RGB(255, 0, 0);
lplvcd->clrText =m_clrChkText; // RGB(255, 255, 0);
pResult = CDRF_NEWFONT;
}
}
break;
case CDDS_ITEMPREPAINT|CDDS_SUBITEM: // recd when CDRF_NOTIFYSUBITEMDRAW is returned in
{ // response to CDDS_ITEMPREPAINT
pResult = CDRF_DODEFAULT;
int iCol = lplvcd->iSubItem;
int iRow = lplvcd->nmcddwItemSpec;
if((iRow & 1))// && (iCol & 1)) // 单行
{
lplvcd->clrTextBk =m_clrLine; // RGB(255, 0, 0);
lplvcd->clrText =m_clrText; // RGB(255, 255, 0);
pResult = CDRF_NEWFONT;
}
else // 双行
{
lplvcd->clrTextBk =m_clrTwoLine; // RGB(255, 0, 0);
lplvcd->clrText =m_clrText; // RGB(255, 255, 0);
pResult = CDRF_NEWFONT;
}
if(GetItemState(iRow,LVIS_SELECTED))
{
lplvcd->clrTextBk =m_clrSelected; // RGB(255, 0, 0);
lplvcd->clrText =m_clrSelText; // RGB(255, 255, 0);
pResult = CDRF_NEWFONT;
}
break;
}
default:// it wasn't a notification that was interesting to us
pResult = CDRF_DODEFAULT;
}
}
①设置列表视图显示方式
Ⅰ CListCtrl有四种样式:LVS_ICON、LVS_SMALLICON、LVS_LIST、LSV_REPORT,可通过控件属性来设置。本文所述均为LSV_REPORT属性。
Ⅱ 扩展样式:
常用的扩展样式有三种:LVS_EX_FULLROWSELECT、LVS_EX_GRIDLINES、LVS_EX_CHECKBOXES,分别对应作用 选中某行时使正行高亮、设置网格线、item前生成Ckeckbox控件。
使用SetExtendedStyle(style)函数设置扩展样式,使用GetExtendedStyle()函数获取样式,如:
m_listInfoSetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
Ⅲ 使用CListView时,需要在PreCreateWindow()函数中添加 csstyle | = LVS_REPORT;
来将其设置为LVS_REPORT风格,否则插入无效。还用另一种方法来设置风格,即在OnInitialUpate()中获取CListCtrl控制权,然后修改风格,如下所示:
CListCtrl &theCtrl =GetListCtrl();
theCtrlModifyStyle(0, LVS_REPORT);
②插入 *** 作
先插入列:
int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem)
插入列时,可指明列号、列名称、列名称显示样式,列宽等信息。对于列号为0的那一列,始终是靠左显示,后面会有修改使其剧中显示的方法,其他列通过设置nFormat属性可以居中显示。
插入行:
int InsertItem( int nItem, LPCTSTRlpszItem )
直接插入一行,nItem指明行号,lpszItem指明该行第0列的信息。
设置信息:
BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText )
设置第nItem行nSubItem列的信息(nItem:0,1,2,3……; nSubItem:1,2,3……)
③删除 *** 作
有三个 *** 作函数:
BOOL DeleteAllItems() -------删除所有的行
BOOL DeleteItem(nItem) --------删除某一行
BOOL DeleteColumn(nCol) -----删除某一列
④获取/设置属性函数
有很多函数了,就不一一介绍了。常用的有
int GetItemCount() -------- 获取已插入信息的行数
BOOL SetItemState(int iLink, UINTstate, UINTstateMask ) ---------设置行状态,如高亮显示等
GetListViewItmeValue(introws, intcols)
在listview里面有这样的用法吗?你的程序不报错已是奇迹了。
listview不像datagridview或者datatable,
它的列不是用col来索引的,而是
listviewitem[itemindex]subitems[subitemindex]text
以上就是关于clistctrl 怎样单击行并且获得被点行的内容全部的内容,包括:clistctrl 怎样单击行并且获得被点行的内容、vc++中CListCtrl控件中怎么样才能选中某一行的某一列、TI公司提供的开发包中InitSysCtrl()函数的作用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)