vc ListControl设置checkbox风格,时owerdata不能设置为true---m_list.SetItemText()m_list.SetItemData()有关

原创 2015年07月07日 10:55:31

网友:

http://blog.163.com/weichao1984@126/blog/static/20525954201082981647567/

这人写的非常全,很好,~\(≧▽≦)/~赞!



ListControl加checkbox属性,简单测试:

1、拖动控件,listcontrol属性如下:



2、对listcontrol添加自己的control变量 m_list


3、设置风格按键,代码:

void CListCtrlDlg::OnBnClickedButton4()
{
<span style="white-space:pre">	</span>// TODO: 在此添加控件通知处理程序代码
<span style="white-space:pre">	</span>m_list.SendMessage (LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
<span style="white-space:pre">		</span>LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES);
<span style="white-space:pre">	</span>m_list.DeleteAllItems();
}


4、插入数据按键:

 m_list.InsertColumn( 0, "ID", LVCFMT_LEFT, 40 );//插入列
     m_list.InsertColumn( 1, "NAME", LVCFMT_LEFT, 50 );
	
      int nRow = m_list.InsertItem(0, "11");//插入行
      m_list.SetItemText(nRow, 1, "jacky");//设置数据
	   int nRow1 = m_list.InsertItem(1, "12");//插入行
     m_list.SetItemText(nRow1, 1, "Tom");//设置数据



5、选择按键:

POSITION pos=m_list.GetFirstSelectedItemPosition();//pos就是行索引号,晕
	if(pos==NULL)
		::AfxMessageBox("请选择要选中的行!");
	else
	{
		while(pos)
		{  
			int nIndex=-1;
			nIndex	= m_list.GetNextSelectedItem(pos);//多少行--

			if(nIndex >=0&&nIndex<m_list.GetItemCount())
			{
				m_list.SetCheck(nIndex,TRUE);
			}
		}
	}





下面,咱说一下,这个ower data属性:

1将其设置为True的时候,程序里这么用的

m_list.SetItemCountEx(m_vAllMJKaInfo.size());
m_list.Invalidate();

这样是动态更新list界面显示的东西


2如果只是简单的  m_list.SetItemText()  m_list.SetItemData()则,将这个 owerdata属性设置为False(默认也是False)


总之,一般用法就是将这个 owerdata属性设置为FALSE,在list中添加Checkbox对勾属性也没问题。

除非,你程序里动态更新list界面,用到 m_list.Invalidate();那么你的 owerdata属性就得设置为True,这时checkbox之类的属性就会有问题。

目前解决办法,2者只能保留其一,我的解决办法是在2个界面上,建立分开的listcontrol,那么一个 owerdata属性就得设置为True,另一个 owerdata属性就得设置为False这样就不会有冲突了。




VC控件--在ListCtrl中加入CheckBox控件

(1)首先,设置list列表的风格ListView_SetExtendedListViewStyle    (m_lvTestList.m_hWnd, LVS_EX_CHECKBOXES | LVS...
  • primer_programer
  • primer_programer
  • 2007年12月26日 17:55
  • 6979

ListControl 设置表格行高与字体

设置行高: CImageList   m_l;    m_l.Create(1,18,TRUE|ILC_COLOR32,1,0);   listCtrl.SetImageList(&m_l,...
  • wumingzcj
  • wumingzcj
  • 2017年01月18日 17:04
  • 1365

设置listctrl 风格及扩展风格

以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn...
  • highyyy
  • highyyy
  • 2010年10月29日 08:46
  • 5233

vc++如何使复选框处于选中状态

((CButton*)(GetDlgItem(IDC_CHECK)))->SetCheck( 1 ) ;
  • hhaoma
  • hhaoma
  • 2008年11月07日 21:41
  • 2193

clistctrl单行多行选中问题

 我用了一个clistctrl我想实现如下功能 1.鼠标点一个后要整行被选中比如说 沥沥 789 妹妹 421 粼粼 542 我要是实现鼠标点 妹妹 或者 421这一行被选中 我现在是单个被选中 2....
  • dadalan
  • dadalan
  • 2008年09月04日 20:03
  • 10146

修改List Control的行高

解决方案: 1. 设置List Control的属性 Owen Draw Fixed. 2. 自定义CMyListCtrl, 继承于CListCtrl,并重载CListCtrl::DrawItem...
  • qingchuan2083
  • qingchuan2083
  • 2012年01月30日 16:40
  • 5263

ListControl控件绘制网格线

重载 DrawItem 函数或Onpaint函数 首先设置ListCtrl的风格   注意去掉网格线。因为我们自己去绘制的了所以不显示网格线了。 如下即使用REPORT风格的ListCtrl控件但是不...
  • qing666888
  • qing666888
  • 2015年11月19日 16:11
  • 3156

mfc listcontrol控件改变字体大小

vc List Control如何改变字体大小  (2010-11-29 15:26:50) 转载▼ 标签:  list   control   改...
  • ilikehigame
  • ilikehigame
  • 2015年07月01日 17:11
  • 2096

设置checkbox为只读(readOnly)的两种方式

checkbox没有readOnly属性,如果使用disabled=“disabled”属性的话,会让checkbox变成灰色的,用户很反感这种样式可以这样让它保持只读: 方式一:  设置它的on...
  • lulidaitian
  • lulidaitian
  • 2017年09月01日 16:06
  • 428

List Control Sort属性非None导致GetItemData失败

在VS2010下将LIST CONTROL的sort属性设置为非none。会导致getitemdata时NULL,无其他代码上的排序任何处理,只是设置此属性。...
  • andrew57
  • andrew57
  • 2013年08月15日 17:14
  • 551
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vc ListControl设置checkbox风格,时owerdata不能设置为true---m_list.SetItemText()m_list.SetItemData()有关
举报原因:
原因补充:

(最多只允许输入30个字)