CListCtrl 应用
标题(带CheckBox的)
.cpp
m_listDtvParent.ModifyStyle(0L,LVS_SHOWSELALWAYS);
DWORD dwStyle = m_listDtvParent.GetExtendedStyle();
dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
dwStyle |= LVS_EX_CHECKBOXES;
m_listDtvParent.SetExtendedStyle( dwStyle );
m_listDtvParent.InsertColumn(0,_T("序号"),LVCFMT_LEFT,70);
m_listDtvParent.InsertColumn(1,_T("设备ID"),LVCFMT_LEFT,120,0);
m_listDtvParent.InsertColumn(2,_T("设备名称"),LVCFMT_LEFT,120,1);
m_listDtvParent.InsertColumn(3,_T("报警人员/车牌"),LVCFMT_LEFT ,120,2);
m_listDtvParent.InsertColumn(4,_T("报警时间"),LVCFMT_LEFT ,120,2);
m_listDtvParent.InsertColumn(5,_T("处理时间"),LVCFMT_LEFT ,120,2);
m_listDtvParent.InsertColumn(6,_T("已发送"),LVCFMT_LEFT ,120,2);
.hpp
CListCtrl m_listDtvParent;
加入行数
CString temp;
for( int i = 1; i <= num_alarm; i++)
{
temp.Format("%d",i);//num_alarm
m_listDtvParent.InsertItem(i,temp);
}
添加数据
链表存储
m_listDtvParent.SetItemText(2, 2, _T("小强"));
CheckBox操作监听
.cpp
void CCompareAlarm::OnItemchangedListCompAlarm(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if((pNMListView->uOldState & INDEXTOSTATEIMAGEMASK(1)) /* old state : unchecked */
&& (pNMListView->uNewState & INDEXTOSTATEIMAGEMASK(2)) /* new state : checked */
)
{
//TRACE("Item(行) %d subItem(列) %d is checked\n", pNMLV->iItem,pNMLV->iSubItem);
//用序号设置全选
/**/
// if( (pNMListView->iItem == 0)&&(pNMListView->iSubItem == 0) )
// {
// for(int i = 0; i < num_alarm; i++)
// m_listDtvParent.SetCheck(i,TRUE);
// }
//目前getcheck 可以直接获取 监听暂时取消
flag_a[pNMListView->iItem] = TRUE;
}
if((pNMListView->uOldState & INDEXTOSTATEIMAGEMASK(2)) /* old state : unchecked */
&& (pNMListView->uNewState & INDEXTOSTATEIMAGEMASK(1)) /* new state : checked */
)
{
// if( (pNMListView->iItem == 0)&&(pNMListView->iSubItem == 0) )
// {
// for(int i = 0; i < num_alarm; i++)
// m_listDtvParent.SetCheck(i,FALSE);
// }
flag_a[pNMListView->iItem] = FALSE;
}
*pResult = 0;
}
.hpp
afx_msg void OnItemchangedListCompAlarm(NMHDR* pNMHDR, LRESULT* pResult);