在ListCtrl中将多选框变为单选框的方法

转载 2007年09月12日 23:18:00

在ListCtrl中将多选框变为单选框的方法:

假定ID为IDC_LIST1
增加:
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)

函数实现:
void CTestDlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)
{
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    *pResult = 0;
   
    static int lSelectItem=-1;
    if (pNMListView->uOldState == 0 && pNMListView->uNewState == 0)
        return;    // No change

    BOOL bPrevState = (BOOL)(((pNMListView->uOldState &
        LVIS_STATEIMAGEMASK)>>12)-1);   // Old check box state
    if (bPrevState < 0)    // On startup there's no previous state
        bPrevState = 0; // so assign as false (unchecked)

    // New check box state
    BOOL bChecked=(BOOL)(((pNMListView->uNewState & LVIS_STATEIMAGEMASK)>>12)-1);  
    if (bChecked < 0) // On non-checkbox notifications assume false
        bChecked = 0;

    if (bPrevState == bChecked) // No change in check box
        return;
   
    if(bChecked)
    {
        if(lSelectItem!=-1)
        {
            //already checked, reset the last checked item
            m_list.SetCheck(lSelectItem,FALSE);
        }
        lSelectItem=pNMListView->iItem;
    }
    else
    {
        //UnCheck,reset lSelectItem
        lSelectItem=-1;
    }
}

 

新的在listctrl中实现复选框变单选框的代码(通用性更好)

前几天转载了一篇实现复选框变单选框的代码,但是该方法采用了静态变量,如果该对话框多次调用,将会有影响。现在写了个新的方法实现,供参考。(1)增加ON_NOTIFY(LVN_ITEMCHANGED, I...
  • cxin917
  • cxin917
  • 2007年09月23日 23:09
  • 1537

如何让ListCtrl的CheckBox只有一个处于选中状态

1、     要让ListCtrl的每一行的第一列为CheckBox,需要做如下设置:   listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyl...
  • rundll64
  • rundll64
  • 2015年05月21日 01:21
  • 378

MFC的listctrl中嵌入Button

这个项目中需要用MFC实现一个界面功能:listctrl中水平添加按钮。       MFC本身的listctrl控件只能显示简单的文本,简单的添加按钮也不是一两句代码能解决的问题,从这方面讲,MF...
  • jiangqin115
  • jiangqin115
  • 2015年03月18日 19:33
  • 2870

CListCtrl控件实现点击单行选中当前CheckBox点击CheckBox实现多选功能

首先创建CListCtr时设置风格 刚开始没看清楚把LVS_SHOWSELALWAYS设置到扩展风格了。导致鼠标移动到哪,选中项就跟到哪。 看清了时LVS   还是LVS_EX     因为...
  • qing666888
  • qing666888
  • 2015年12月09日 10:40
  • 2652

如何让ListCtrl的CheckBox只有一个处于选中状态

1、要让ListCtrl的每一行的第一列为CheckBox,需要做如下设置: listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyle()|LVS_E...
  • u010204038
  • u010204038
  • 2014年12月23日 20:33
  • 742

在ListCtrl中将多选框变为单选框的方法

在ListCtrl中将多选框变为单选框的方法:假定ID为IDC_LIST1增加:ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)函数实...
  • cxin917
  • cxin917
  • 2007年09月12日 23:18
  • 1757

实现ListCtrl中checkbox风格的单选

  • 2010年12月22日 15:40
  • 26KB
  • 下载

在ListCtrl中将多选框变为单选框的方法

在ListCtrl中将多选框变为单选框的方法:假定ID为IDC_LIST1增加:ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)函数实...
  • lyzhm
  • lyzhm
  • 2007年03月29日 13:35
  • 1060

多选框checkbox和单选框用法

checkbox多选框,可以一次选择多个 大类 小类一 小类二 小类三 点我 function bigChange(obj) { if (o...
  • beiyuxinke
  • beiyuxinke
  • 2016年05月20日 14:55
  • 250

为dialog添加单选列表控件

AlertDialog.Builder builder = new AlertDialog.Builder(TMTestActivity.this); builder....
  • u013708985
  • u013708985
  • 2015年11月14日 14:43
  • 291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ListCtrl中将多选框变为单选框的方法
举报原因:
原因补充:

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