关于MFC中Tree Control控件中的OnSelchanged消息是不是有bug?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于MFC中Tree Control控件中的OnSelchanged消息是不是有bug?相关的知识,希望对你有一定的参考价值。

我想实现,只要tree control控件中的checkbox选中状态改变,就遍历出选中的选项
然后我把OnSelchanged和OnSelchanging都测试了一下,结果一样。
测试过程:默认全部选中,然后去掉一个勾,两个消息里都是显示全部被选中
我的理解:OnSelchanged的消息应该是现在完成时,只有完成了选中改变,系统才会发送这个消息
那我去掉tree中的checkbox,应该不是显示全部才对。
测试过程如下图:
默认全选状态
当点击去掉一个选项时,弹出的messagebox显示了全部的选项
这是去掉之后的图

参考技术A 1、如果使用Checkbox属性,那么要么全有,要么全无,不能单个设置。
2、需要自定义控件,通过Item的图标来标识是否checkbox,或者你恰好将图标绘制的和复选方框一摸一样。鼠标点击的时候通过切换图片来达到视觉上复选、取消的效果。
3、可以使用BCGP界面库中Tree控件。追问

这个评论是复制?
我的意思是遍历所有选中的选项,而不是有的设置checkbox属性有的不设置。
谢谢

MFC 列表控件List Control

一般用带有表头的报表模式,所以属性:View设为Report

技术图片

    // OnInitDialog()中
    CString str[] = {TEXT("姓名"),TEXT("性别"),TEXT("年龄") };
    for (int i = 0; i < 3; i++)
    {
        //设置表头,索引、内容、左对齐、列宽
        m_listControl.InsertColumn(i, str[i], LVCFMT_LEFT,100);
    }
    //设置正文
    m_listControl.InsertItem(0, TEXT("张三"));//插入,第一条
    m_listControl.SetItemText(0, 1, TEXT(""));//设置条目内容,第一条第2列
    m_listControl.SetItemText(0, 2, TEXT("20"));
    m_listControl.InsertItem(1, TEXT("李四"));//第二条
    //设置属性,整行选中,显示网格
    m_listControl.SetExtendedStyle(m_listControl.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

【参考】https://www.bilibili.com/video/av52921336?p=16

以上是关于关于MFC中Tree Control控件中的OnSelchanged消息是不是有bug?的主要内容,如果未能解决你的问题,请参考以下文章

急急急急!!!关于MFC中List Control 控件的问题

VC6.0中基于对话框的MFC EXE中的Tab Control控件如何使用???

树控件(Tree Control),标签控件(tab control)

VC6.0中的Tree Control控件,如何给有的节点设checkbox,而有的节点不设?具体代码如何实现?

VC6.0中基于对话框的MFC EXE中的Tab Control控件如何使用???

MFC标签控件CTabCtrl