clistctrl 怎样单击行并且获得被点行的内容

clistctrl 怎样单击行并且获得被点行的内容,第1张

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()函数的作用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9282166.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存