4

我已经实现了一个带有LVS_EX_CHECKBOXES | LVS_EX_INFOTIP样式的 ListView 控件。我已经注册了使用列表视图控件项获取通知的功能。

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

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

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

请帮助我

4

1 回答 1

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;
}
于 2012-11-28T15:47:42.550 回答