从 Listview Control 复选框获取通知代码

Posted

技术标签:

【中文标题】从 Listview Control 复选框获取通知代码【英文标题】:Get the notification code from Listview Control checkboxes 【发布时间】:2012-11-28 13:52:55 【问题描述】:

我用LVS_EX_CHECKBOXES | LVS_EX_INFOTIP 风格实现了一个ListView 控件。我已经注册了从列表视图控件项中获取通知的函数。

BEGIN_MESSAGE_MAP(Class, ParentClass)
ON_NOTIFY(LVN_GETINFOTIP,IDC_LIST2,OnClickCheckBox)
END_MESSAGE_MAP()

我的问题是,当您选择/取消选择 ListView 控件项目中的复选框时,将向父级发送什么通知代码..

需要编写哪些代码来处理 OnClickCheckBox() 函数中的复选框选择?

请帮帮我

【问题讨论】:

【参考方案1】:

您收到 item-changed-message 并且您必须找出复选框状态是否已更改。

在消息映射中:

ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, &CMyListView::OnLvnItemchanged)

事件处理程序:

void CMyListView::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)

    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);

    if(pNMLV->uNewState == 8192) // Item checked
    
        ...
    
    else if(pNMLV->uNewState == 4096) // Item unchecked
    
        ...
    

    *pResult = 0;

【讨论】:

以上是关于从 Listview Control 复选框获取通知代码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用复选框和自定义适配器从 Listview 中获取选定的列表项?

从 Android 中的 ListView 获取更新的数据

如何从C#中获取ListView中选中某一行某一列的值

WPF XAML 在 ListView 中看不到复选框

使用 Listview 中的复选框获取所选项目

如何在 ListView 内的复选框中获取位置