ListCtrllistbox控件的列中如何得到某一行某一列的值

GetBkColor获取列表视图控件的背景色。   SetBkColor设置列表视图控件的背景色。   GetImageList获取用于绘制列表视图项的图象列表的句柄。   SetImageList指定一个图象列表到列表视图控件。   GetItemCount获取列表视图控件中的项的数量。   GetItem获取列表视图项的属性。   GetCallbackMask获取列表视图控件的回调掩码。   SetCallbackMask设置列表视图控件的回调掩码。   GetNextItem查找指定特性和指定指定项关系的列表视图项。   GetFirstSeletedItemPosition在列表视图控件中获取第一个选择的列表视图项的位置。   GetNextSeletedItem为重复而获取下一个选择的列表视图。   GetItemRect获取项的有界矩形。   SetItemPosition在列表视图控件中移动一项到指定位置。   GetItemPosition获取列表视图项的位置。   GetStringWidth指定需要显示所有指定字符串的最小列宽。   GetEditControl获取用于编辑一个项文本的编辑控件的句柄。   GetColumn获取控件的列的属性。   SetColumn设置列表视图列的属性。   GetColumnWidth获取报表视图或列表视图中的列的宽度。   SetColumnWidth改变报表视图或列表视图中的列的宽度。   GetCheck获取与某项相关的状态图象的当前显示状态。   SetCheck设置与某项相关的状态图象的当前显示状态。   GetViewRect获取列表视图控件中所有项的有界矩形。   GetTextColor获取列表视图控件的文本颜色。   SetTextColor设置列表视图控件的文本颜色。   GetTextBkColor获取列表视图控件的文本背景色。   SetTextBkColor设置列表视图控件的文本背景色。   GetTopIndex获取最高级项的索引。   GetCountPerPage计算可正好垂直放入列表视图控件中的项的数目。   GetOrigin获取列表视图控件的最初的当前视图。   SetItemState改变列表视图控件的项的状态。   GetItemState获取列表视图控件的项的状态。   GetItemText获取列表视图项或子项的文本。   SetItemText设置列表视图项或子项的文本。   SetItemCount准备一个列表视图控件以添加大量的项。   GetItemData获取与某项相关的应用所指定的值。   SetItemData设置项的应用指定的值。   GetSelectedCount获取列表视图控件中选择项的数量。   SetColumnOrderArray设置列表视图控件的列序(左或右)。   GetColumnOrderArray获取列表视图控件的列序(左或右)。   SetIconSpacing设置列表视图控件中的图标的距离。   GetHeaderCtrl获取列表视图控件的标题控件。   GetHotCursor获取在热调试对列表视图控件有效时使用的游标。   SetHotCursor设置在热调试对列表视图控件有效时使用的游标。   GetSubItemRect获取列表视图控件中某项的有界矩形。   GetHotItem获取当前在游标下的列表视图项。   SetHotItem设置列表视图控件的当前热项。   GetSelectionMark获取列表视图控件的选择屏蔽。   SetSelectionMark设置列表视图控件的选择屏蔽。   GetExtendedStyle获取列表视图控件的当前扩展风格。   SetExtendedStyle设置列表视图控件的当前扩展风格。   SubItemHitTest指定哪个列表视图项在指定位置。   GetWorkAreas获取列表视图控件的当前工作区。   GetNumberOfWorkAreas获取列表视图控件的当前工作区数量。   SetItemCountEx设置虚列表视图控件的项的数量。   SetWorkAreas设置列表视图控件中图标可以显示的区域。   ApproximateViewRect指定显示列表视图控件项所需的宽度和高度。   GetBkImage获取列表视图控件的当前背景图象。   SetBkImage设置列表视图控件的当前背景图象。   GetHoverTime获取列表视图控件的当前逗留时间。   SetHoverTime设置列表视图控件的当前逗留时间。
MFC控件使用之一 ListCtrl的使用
如何让MFC中listctrl自动填充整个对话框窗口
MFC ListCtrl的用法
MFC ListCtrl 用法详细举例
MFC中CListCtrl控件的用法
没有更多推荐了,MFC列表控件中如何设置某一行颜色
首先鄙视一下新浪,现在发博文居然强制同步微博,有图有真相:
要想列表控件指定某一行颜色,而其它行还是原色,CListCtrl类中虽然有指定文本的颜色,但并没有成员函数指它某一行颜色,因此,需要重写该类以便作其它处理生成特殊效果,本文的目地是做出如下效果,要做出其它效果可参见相关链接。
              
一、首先自制类。(也可以从我微博的微盘下我那个类),步骤如下:
  1.Create a Visual C++ 2010 dialog-based project
named ListCtrlColor.
  2.From the Class View, select the Project menu
option and click Add Class to invoke the Add Class dialog box.
  3.Select MFC from the list of categories and then
MFC Class from the list of templates.
  4.Click the Add button to invoke the MFC Class
Wizard dialog box.
  5.For the Class name, type in the value
CXListCtrl and select a Base class of CListCtrl.
  6.Click the Finish button to generate the class's
header and implementation files.
  7.From the Class View, right-click the CXListCtrl
class and select the Properties context menu option.
  8.When the Properties window displays, click the
Messages button at the top to display a two-column list of messages
for which you can implement handlers.
  9.Click the NM_CUSTOMDRAW entry from the messages
list, then drop down the combobox arrow of the second column and
select the value &Add&
OnNMCustomdraw.
  10.Now for the drawing code. Here, we'll simply
handle the item and subitem prepaint stages and specify the text
and background colors to use based on the current row (item) and
column (subitem). To do that, modify the OnNMCustomdraw function as
CListCtrlWithCustomDraw::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT
*pResult) { *pResult = CDRF_DODEFAULT;
NMLVCUSTOMDRAW * lplvdr=(NMLVCUSTOMDRAW*)pNMHDR;
switch(lplvdr-&nmcd.dwDrawStage)
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT:
lplvdr-&clrText=(COLORREF)lplvdr-&nmcd.lItemlP
SelectObject(lplvdr-&nmcd.hdc,0);
*pResult= CDRF_NEWFONT;
二、改变绑定类
  1.先定义普通列表控件,关联变量(如m_list)。
  2.然后在对应的头文件,将CListCtrl m_list 改为 CXListCtrl
m_list,注意要包括自写类的头文件
  想改变某一行的颜色,只需要调用SetItemDate()方法即可
   m_list.SetItemData(2,(DWORD)RGB(255,0,0));
  其中的2代表的是第三行(3-1=2),,(DWORD)RGB(255,0,0)就是要改变的颜色,这里是红色。
  到此,完。
参考链接:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。vc ListCtrl 某行某列 插入数据_百度知道
vc ListCtrl 某行某列 插入数据
如图所示,我想把80个数据分成第一列28个,第二列28个,第三列24个,可是插入的时候发现程序只能三列都是28行,而且我想一次插入数据,请问如何操作,或者使用flexgrid,有相关例子或...
如图所示,我想把80个数据分成第一列28个,第二列28个,第三列24个,可是插入的时候发现程序只能三列都是28行,而且我想一次插入数据,请问如何操作,或者使用flexgrid,有相关例子或者链接都可以,谢谢!图上的数据是我循环插入的,不是真实数据。
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
veket的小号
来自电脑网络类芝麻团
veket的小号
采纳数:1827
获赞数:2602
参与团队:
控件风格 report&+ LVS_EX_GRIDLINES ,目测楼主小学数学是体育老师教滴&m_list.SetTextColor(RGB(0,0,255));m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_GRIDLINES);m_list.InsertColumn(0,&_T(&NO.&));m_list.InsertColumn(1,&_T(&Wafer&NO.&));m_list.InsertColumn(2,&_T(&NO.&));m_list.InsertColumn(3,&_T(&Wafer&NO.&));m_list.InsertColumn(4,&_T(&NO.&));m_list.InsertColumn(5,&_T(&Wafer&NO.&));int&i;for(i=0;i&6;i++,i++)m_list.SetColumnWidth(i,&30);for(i=1;i&6;i++,i++)m_list.SetColumnWidth(i,&100);CString&s;CString&s1;for(i=0;i&28;i++){s.Format(_T(&%d&),&i+1);m_list.InsertItem(i,&s);s1.Format(_T(&第%d项内容&),&i+1);m_list.SetItemText(i,&1,&s1);s.Format(_T(&%d&),&28*1+i+1);m_list.SetItemText(i,&2,&s);s1.Format(_T(&第%d项内容&),&28*1+i+1);m_list.SetItemText(i,&3,&s1);if(28*2+i+1&=80){s.Format(_T(&%d&),&28*2+i+1);m_list.SetItemText(i,&4,&s);s1.Format(_T(&第%d项内容&),&28*2+i+1);m_list.SetItemText(i,&5,&s1);}}
你好,非常感谢,我那个插入的时候是在最后一列多加了1,我想问下如何设置ListCtrl某个单元格的背景颜色,那个WaferNo需要,编号不需要,网上说重载DrawItem,有个SetItemColor ,可我不太会,再次谢谢了!
这个需要 自己对mfc的CListCtrl 进行派生 增加功能 & 参考vcbase可设置单元格颜色的ClistCtrl类
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。ListCtrl控件双击后无法获取除第1列以外的行号
[问题点数:20分]
本版专家分:0
CSDN今日推荐
本版专家分:0
本版专家分:0
匿名用户不能发表回复!
其他相关推荐列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格:
LVS_ICON LVS_SMALLICON LVS_LIST LVS_REPORT 这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:大图标显示,小图标显示,列表显示,详细报表显示
LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。
LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
LVS_SINGLESEL 同时只能选中列表中一项
首先你需要设置列表控件所使用的ImageList,如果你使用大图标显示风格,你就需要以如下形式调用: CImageList* SetImageList( CImageList* pImageList, LVSIL_NORMAL); 如果使用其它三种风格显示而不想显示图标你可以不进行任何设置,否则需要以如下形式调用: CImageList* SetImageList( CImageList* pImageList, LVSIL_SMALL);
通过调用int InsertItem( int nItem, LPCTSTR lpszItem );可以在列表控件中nItem指明位置插入一项,lpszItem为显示字符。除LVS_REPORT风格外其他三种风格都只需要直接调用 InsertItem就可以了,但如果使用报表风格就必须先设置列表控件中的列信息。
通过调用int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat , int nWidth, int nSubItem);可以插入列。iCol为列的位置,从零开始,lpszColumnHeading为显示的列名,nFormat为显示对齐方式, nWidth为显示宽度,nSubItem为分配给该列的列索引。
在有多列的列表控件中就需要为每一项指明其在每一列中的显示字符,通过调用 BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText );可以设置每列的显示字符。nItem为设置的项的位置,nSubItem为列位置,lpszText为显示字符。下面的代码演示了如何设置多列并插入数据:
m_list.SetImageList(&m_listSmall,LVSIL_SMALL);//设置ImageList
m_list.InsertColumn(0,"Col 1",LVCFMT_LEFT,300,0);//设置列
m_list.InsertColumn(1,"Col 2",LVCFMT_LEFT,300,1);
m_list.InsertColumn(2,"Col 3",LVCFMT_LEFT,300,2);
m_list.InsertItem(0,"Item 1_1");//插入行
m_list.SetItemText(0,1,"Item 1_2");//设置该行的不同列的显示字符
m_list.SetItemText(0,2,"Item 1_3");
此外CListCtrl还提供了一些函数用于得到/修改控件的状态。 COLORREF GetTextColor( )/BOOL SetTextColor( COLORREF cr );用于得到/设置显示的字符颜色。 COLORREF GetTextBkColor( )/BOOL SetTextBkColor( COLORREF cr );用于得到/设置显示的背景颜色。 void SetItemCount( int iCount );用于得到添加进列表中项的数量。 BOOL DeleteItem(int nItem);用于删除某一项,BOOL
DeleteAllItems( );将删除所有项。 BOOL SetBkImage(HBITMAP hbm, BOOL fTile , int xOffsetPercent, int yOffsetPercent);用于设置背景位图。 CString GetItemText( int nItem, int nSubItem );用于得到某项的显示字符。
列表控件的消息映射同样使用ON_NOTIFY宏,形式如同:ON_NOTIFY( wNotifyCode, id, memberFxn ),wNotifyCode为通知代码,id为产生该消息的窗口ID,memberFxn为处理函数,函数的原型如同void OnXXXList(NMHDR* pNMHDR, LRESULT* pResult),其中pNMHDR为一数据结构,在具体使用时需要转换成其他类型的结构。对于列表控件可能取值和对应的数据结构为:
LVN_BEGINLABELEDIT 在开始某项编辑字符时发送,所用结构:NMLVDISPINFO
LVN_ENDLABELEDIT 在结束某项编辑字符时发送,所用结构:NMLVDISPINFO
LVN_GETDISPINFO 在需要得到某项信息时发送,(如得到某项的显示字符)所用结构:NMLVDISPINFO
关于ON_NOTIFY有很多内容,将在以后的内容中进行详细讲解。
关于动态提供结点所显示的字符:首先你在项时需要指明lpszItem参数为: LPSTR_TEXTCALLBACK。在控件显示该结点时会通过发送TVN_GETDISPINFO来取得所需要的字符,在处理该消息时先将参数 pNMHDR转换为LPNMLVDISPINFO,然后填充其中item.pszText。通过item中的iItem,iSubItem可以知道当前显示的为那一项。下面的代码演示了这种方法:
char szOut[8][3]={"No.1","No.2","No.3"};
//添加结点
m_list.InsertItem(LPSTR_TEXTCALLBACK,...)
m_list.InsertItem(LPSTR_TEXTCALLBACK,...)
//处理消息
void CParentWnd::OnGetDispInfoList(NMHDR* pNMHDR, LRESULT* pResult)
LV_DISPINFO* pLVDI = (LV_DISPINFO*)pNMHDR;
pLVDI-&item.pszText=szOut[pTVDI-&item.iItem];//通过iItem得到需要显示的字符在数组中的位置
*pResult = 0;
关于编辑某项的显示字符:(在报表风格中只对第一列有效)首先需要设置列表控件的 LVS_EDITLABELS风格,在开始编辑时该控件将会发送LVN_BEGINLABELEDIT,你可以通过在处理函数中返回TRUE来取消接下来的编辑,在编辑完成后会发送LVN_ENDLABELEDIT,在处理该消息时需要将参数pNMHDR转换为LPNMLVDISPINFO,然后通过其中的item.pszText得到编辑后的字符,并重置显示字符。如果编辑在中途中取消该变量为NULL。下面的代码说明如何处理这些消息:
//处理消息 LVN_BEGINLABELEDIT
void CParentWnd::OnBeginEditList(NMHDR* pNMHDR, LRESULT* pResult)
LV_DISPINFO* pLVDI = (LV_DISPINFO*)pNMHDR;
if(pLVDI-&item.iItem==0);//判断是否取消该操作
*pResult = 1;
*pResult = 0;
//处理消息 LVN_BEGINLABELEDIT
void CParentWnd::OnBeginEditList(NMHDR* pNMHDR, LRESULT* pResult)
LV_DISPINFO* pLVDI = (LV_DISPINFO*)pNMHDR;
if(pLVDI-&item.pszText==NULL);//判断是否已经取消取消编辑
m_list.SetItemText(pLVDI-&item.iItem,0,pLVDI-&pszText);//重置显示字符
*pResult = 0;
上面讲述的方法所进行的消息映射必须在父窗口中进行(同样WM_NOTIFY的所有消息都需要在父窗口中处理)。
如何得到当前选中项位置:在列表控件中没有一个类似于ListBox中GetCurSel()的函数,但是可以通过调用GetNextItem( -1, LVNI_ALL | LVNI_SELECTED);得到选中项位置。
23. listctrl排序
Q250614:How To Sort Items in a CListCtrl in Report View
// 排序用的比较函数
static int CALLBACK MyCompareProc(LPARAMlParam1, LPARAMlParam2, LPARAMlParamSort)
CString &lp1 = *((CString *)lParam1);
CString &lp2 = *((CString *)lParam2);
int &sort = *(int *)lParamS
if (sort == 0)
returnlp1.CompareNoCase(lp2);
returnlp2.CompareNoCase(lp1);
//要处理的事件
ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, &CDlg::OnLvnColumnclickList1)
//处理代码
voidCDlg::OnLvnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult)
LPNMLISTVIEWpNMLV = reinterpret_cast&LPNMLISTVIEW&(pNMHDR);
intLength = m_ListCtrl.GetItemCount();
CArray&CString,CString& ItemD
ItemData.SetSize(Length);
for (inti = 0; i & L i++)
ItemData[i] = m_ListCtrl.GetItemText(i,pNMLV-&iSubItem);
m_ListCtrl.SetItemData(i,(DWORD_PTR)&ItemData[i]);//设置排序关键字
staticintsort = 0;
staticintSubItem = 0;
if (SubItem != pNMLV-&iSubItem)
SubItem = pNMLV-&iSubI
if (sort == 0)
m_ListCtrl.SortItems(MyCompareProc,(DWORD_PTR)&sort);//排序
*pResult = 0;
--------------------------------------------------------------------------------
24. 在listctrl中选中某个item时动态改变其icon或bitmap
Q141834: How to change the icon or the bitmap of a CListCtrl item in Visual C++
--------------------------------------------------------------------------------
25. 在添加item后,再InsertColumn()后导致整列数据移动的问题
Q151897: CListCtrl::InsertColumn() Causes Column Data to Shift
--------------------------------------------------------------------------------
26. 关于listctrl第一列始终居左的问题
解决办法:把第一列当一个虚列,从第二列开始插入列及数据,最后删除第一列。
具体解释参阅
--------------------------------------------------------------------------------
27. 锁定column header的拖动
--------------------------------------------------------------------------------
28. 如何隐藏clistctrl的列
把需隐藏的列的宽度设为0,然后检测当该列为隐藏列时,用上面第27点的锁定column 的拖动来实现
--------------------------------------------------------------------------------
29. listctrl进行大数据量操作时,使用virtual list
--------------------------------------------------------------------------------
30. 关于item只能显示259个字符的问题
解决办法:需要在item上放一个edit。
--------------------------------------------------------------------------------
31. 响应在listctrl的column header上的鼠标右键单击
Q125694: How To Find Out Which Listview Column Was Right-Clicked
--------------------------------------------------------------------------------
32. 类似于windows资源管理器的listview
Q234310: How to implement a ListView control that is similar to Windows Explorer by using DirLV.exe
--------------------------------------------------------------------------------
33. 在ListCtrl中OnTimer只响应两次的问题
PRB: OnTimer() Is Not Called Repeatedly for a List Control
--------------------------------------------------------------------------------
34. 以下为一些为实现各种自定义功能的listctrl派生类
在CListCtrl和CTreeCtrl间拖放
多功能listctrl
支持subitem可编辑,图标,radiobutton,checkbox,字符串改变颜色的类
支持排序,subitem可编辑,subitem图标,subitem改变颜色的类
subitem中显示超链接
subitem的tooltip提示
subitem中显示进度条
动态改变subitem的颜色和背景色
类vb属性对话框
选中subitem(只高亮选中的item)
改变行颜色
可编辑subitem的listctrl
MFC控件:listctrl使用方法总结
MFC基本控件使用——列表控件(ListCtrl)
ListCtrl控件的使用
MFC中ListCtrl的函数
没有更多推荐了,

我要回帖

更多关于 行来源和控件来源 的文章

 

随机推荐