在CListCtrl中增加CheckBoxs

 

因为项目中用到了这个,把自已写的代码整理了一下,在这里做个标记,以后再用到的时候以便来取

/*********************在CListCtrl中增加CheckBoxs**************************/ void InitListCtrl() { //获取List控件的宽,以便设置插入列的宽度 CRect listRect; m_listCtrl.GetClientRect(&listRect); //基本风格 LONG lStyle; lStyle = GetWindowLong(m_listCtrl.m_hWnd, GWL_STYLE); lStyle &= ~LVS_TYPEMASK; lStyle |= LVS_REPORT; lStyle |= LVS_SINGLESEL; //只选中一行 SetWindowLong(m_listCtrl.m_hWnd, GWL_STYLE, lStyle); //扩展风格 DWORD dwStyle = m_listCtrl.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT; //选中行 dwStyle |= LVS_EX_CHECKBOXES; //checkbox控件 m_listCtrl.SetExtendedStyle(dwStyle); //获取垂直滚动条的宽度 int scrollWidth = GetSystemMetrics(SM_CXVSCROLL); //只插入一列 m_listCtrl.InsertColumn( 0, _T("ID"), LVCFMT_LEFT, listRect.Width()-scrollWidth);//插入列 //插入行 CString strName; for (int i=0; i<50; ++i) { strName.Format(_T("%s%d"), _T("当当当当"), i); m_listCtrl.InsertItem(i, strName);//插入行 } } void OnNMClickList(NMHDR *pNMHDR, LRESULT *pResult) { //坐标转换 DWORD dwPos = GetMessagePos(); POINTS ps= MAKEPOINTS(dwPos); CPoint point(ps.x, ps.y); m_listCtrl.ScreenToClient(&point); //选中行 UINT uFlag; int item = m_listCtrl.HitTest(point, &uFlag); if (LVHT_ONITEMSTATEICON == uFlag) { m_listCtrl.SetItemState(item, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED ); } *pResult = 0; } /******************************************************/

你可能感兴趣的:(在CListCtrl中增加CheckBoxs)