MFC控件之list control
来源:互联网 发布:软件天空下载 编辑:程序博客网 时间:2024/05/16 13:57
使用之前应该对列表控件的VIEW值设置为report,不然后面所有设置可能不起作用
1、初始化,即设置列名,列宽
//设置列名跟列宽CRect m_rect;
m_testList.GetClientRect(m_rect);
int columnWidth = m_rect.Width()/3;
m_testList.InsertColumn(1,"配置类型",LVCFMT_CENTER,columnWidth);
m_testList.InsertColumn(2,"配置属性",LVCFMT_CENTER,columnWidth);
m_testList.InsertColumn(3,"配置值",LVCFMT_CENTER,columnWidth);
2、设置列表框显示类型
DWORD dwStyle = m_testList.GetExtendedStyle();dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
m_testList.SetExtendedStyle(dwStyle); //设置扩展风格
3、清空原有列表框中数据
m_testList.DeleteAllItems();4、插入数据到列表框
m_testList.InsertItem(i,configType,0); //行的第一列数据要用InsertItem(),也可以写成InsertItem(i,configType);m_testList.SetItemText(i,1,configParam); //行的其他列数据就用SetItemText()
m_testList.SetItemText(i,2,configValue);
注:在循环插入多列时,一定要在循环内开始的位置configType = configParam = configValue = "";不然可能出现某一项其实是空值,但插入时插入了上一行的该值。
5、删除列表框中的某一行
//获取选中行的行数int i = m_testList.GetSelectionMark(); //GetSelectionMark()在多次点击不同行时会出现问题,值一直是第一次点击 //的行的值。故最好用
//POSITION pos = m_testList.GetFirstSelectedItemPosition();
//int i = m_testList.GetNextSelectedItem(pos);
//删除该行
m_testList.DeleteItem(i);
注:同时删除多行操作时要注意删除的顺序,从高行开始删,因为列表框删掉一行后,其后的行会自动补上来的。
6、获取到列表框中的总行数,总列数
//总行数int n = m_list.GetItemCount();//总列数
int n = m_list.GetHeaderCtrl()->GetItemCount();
7、获取列表框中某行某列的值
CString S = m_testList.GetItemText(2,1);8、设置选中某一行
m_list.EnsureVisible(i,FALSE); //使列表框的某一列可见,即移动下拉条m_testList.SetItemState(nIndex,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
9、选中某一行,包括设置高亮,checkbox选中等
SetItemState(iSelectItem, LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);10、获取checkbox状态
int n = m_list.GetCheck(i); //返回非0,则表示选中checkbox,0表示未选中11、设置checkbox的值
m_list.SetCheck(i,TRUE); //给第i行的checkbox打上勾m_list.SetCheck(i,FALSE); //去掉第i行的checkbox的勾
//设置第一列的列名为’曲名’
m_listctrl.InsertColumn(0,”曲名”);
//设置列宽
CRect m_rect;
m_listctrl.GetClintRect(m_rect);
m_listctrl.SetColumnWidth(0,m_rect.Width/4);//设置列宽为客户区的1/4
//列名、列宽也可以一块设置
m_listctrl.InsetColumn(0,”曲名”,LVCFMT_CENTER,m_rect.Width/4);
12、设置某一行的背景颜色
VC自带没有这种功能,具体参考http://www.cnblogs.com/rainbowzc/archive/2012/02/26/2369082.html
指定改变CListCtrl中某一行的颜色,比如说刚添加进去的一行,让它改变颜色,这样记录多了,容易看到自己刚刚加如的行,方便操作可查看,也可以让添加和修改的记录显示不一样的颜色,方便的多了,VC自带的没有这种功能。 1.首先从CListCtrl 继承一个类,命名为CXListCtrl
在头文件中加摸板
CMap<DWORD, DWORD&, COLORREF, COLORREF&> MapItemColor;
好在这里查找你的修改的颜色。
2.自己写个消息映射,可能添加不上,要自己写。
BEGIN_MESSAGE_MAP(CXListCtrl, CListCtrl)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnNMCustomdraw)
// ON_WM_SIZE()
END_MESSAGE_MAP()
OnNMCustomdraw 为实现函数。
3.写OnNMCustomdraw函数。
void CXListCtrlNew::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
*pResult = CDRF_DODEFAULT;
NMLVCUSTOMDRAW * lplvdr=(NMLVCUSTOMDRAW*)pNMHDR;
NMCUSTOMDRAW &nmcd = lplvdr->nmcd;
switch(lplvdr->nmcd.dwDrawStage)//判断状态
{
case CDDS_PREPAINT:
{
*pResult = CDRF_NOTIFYITEMDRAW;
break;
}
case CDDS_ITEMPREPAINT://如果为画ITEM之前就要进行颜色的改变
{
COLORREF ItemColor;
if(MapItemColor.Lookup(nmcd.dwItemSpec, ItemColor))
// 根据在 SetItemColor(DWORD iItem, COLORREF color) 设置的
// ITEM号和COLORREF 在摸板中查找,然后进行颜色赋值。
{
//lplvdr->clrText = RGB(0,0,0);//ItemColor;
lplvdr->clrTextBk = ItemColor;
*pResult = CDRF_DODEFAULT;
}
}
break;
}
}
4.修改指定一行的颜色。
void CXListCtrl::SetItemColor(DWORD iItem, COLORREF color)
{
// m_iCurrentItem = iItem;
// m_CurrentColor = color;
MapItemColor.SetAt(iItem, color);//设置某行的颜色。
this->RedrawItems(iItem, iItem);//重新染色
//this->SetCheck(iItem,1);
this->SetFocus(); //设置焦点
UpdateWindow();
}
5.修改全部行的颜色。
void CXListCtrl::SetAllItemColor(DWORD iItem,COLORREF TextBkColor)
{
//INT_PTR ncount = this->GetItemCount();
if(iItem > 0)
{
for(DWORD numItem = 0; numItem < iItem ;numItem ++)
{
//iItem = i;
MapItemColor.SetAt(numItem, TextBkColor);
this->RedrawItems(numItem, numItem);
}
}
return;
}
m_list.SetItemColor(i,RGB(255,0,0));
- MFC控件之list control
- MFC控件之list control(续)---ado
- MFC之列表视图控件List Control
- MFC List Control控件
- MFC控件(5):List Control
- MFC list Control 控件设置
- MFC控件List Control总结
- MFC 对话框 list control控件
- MFC列表控件--List control
- MFC控件之spin control
- mfc控件之Tab control
- MFC控件之Edit Control
- MFC List Control控件技巧总汇
- MFC中list control控件设置
- MFC编程->可编辑List Control控件
- MFC编程->可编辑List Control控件
- MFC 中List control 控件问题!
- MFC list control控件的相关函数
- Spring-JNDI配置
- HTML rowspan 属性 HTML colspan 属性
- 4.利用DateFormat
- Android ListView 下拉刷新 上拉更多[实例]
- 30种编程语言的比较选择问题
- MFC控件之list control
- SQL Server 分页查询存储过程代码
- php程序员学C/C++
- 使用POWERDESIGNER设计数据库的20条技巧(转)
- SQL脚本语言
- CXF出现java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
- 求水仙花数
- Activity的生命周期整理
- 推荐两个东西,希望对做research的朋友有帮助