qq_27992619 2015-08-22 16:48 采纳率: 0%
浏览 3166
已结题

关于CListCtrl控件的添加CheckBox扩展功能

最近在做一个小项目,想在自己的CXListCtrl类中实现单元格中可以有CheckBox。原本的一个风格只会实现第一列有CheckBox,其他列单元个要有CheckBox请问怎么实现?在CodeProject网上查到了一个XListCtrl控件,但是太复杂,不会引用到VC 6.0中,求大婶支招。我的邮箱wmg715@163.com

  • 写回答

2条回答

  • threenewbee 2015-08-22 17:58
    关注

    `1 建立测试工程
    新建一个对话框工程,并添加一个CListCtrl控件,并关联一个成员变量m_List。
    2 设置LVS_EX_CHECKBOXES风格
    ListView_SetExtendedListViewStyle(m_List.GetSafeHwnd(), m_List.GetExStyle() | LVS_EX_CHECKBOXES);
    3 为listctrl添加测试项
    在OnInitDialog()中添加如下代码:
    m_List.InsertColumn(0,"Name",LVCFMT_LEFT,150);
    m_List.InsertColumn(1,"Sex",LVCFMT_LEFT,200);
    m_List.InsertItem(0, "ZhangSan");
    m_List.InsertItem(1, "LiSi");
    4 添加控件通知消息
    为ListCtrl控件添加LVN_ITEMCHANGED消息。系统生成如下代码:
    void CXXXDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);
    // TODO: Add your control notification handler code here
    *pResult = 0;
    }

    5 在LVN_ITEMCHANGED消息处理函数中添加代码如下:
    void CXXXDlg::OnLvnItemchangedList1(NMHDR pNMHDR, LRESULT *pResult)
    {
    LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);
    // TODO: Add your control notification handler code here
    /

    typedef struct tagNMLISTVIEW
    {
    NMHDR hdr;
    int iItem;
    int iSubItem;
    UINT uNewState;
    UINT uOldState;
    UINT uChanged;
    POINT ptAction;
    LPARAM lParam;
    } NMLISTVIEW, LPNMLISTVIEW;
    */
    if((pNMLV->uOldState & INDEXTOSTATEIMAGEMASK(1)) /
    old state : unchecked /
    && (pNMLV->uNewState & INDEXTOSTATEIMAGEMASK(2)) /
    new state : checked /
    )
    {
    TRACE("Item %d is checked\n", pNMLV->iItem);
    }
    else if((pNMLV->uOldState & INDEXTOSTATEIMAGEMASK(2)) /
    old state : checked /
    && (pNMLV->uNewState & INDEXTOSTATEIMAGEMASK(1)) /
    new state : unchecked */
    )
    {
    TRACE("Item %d is unchecked\n", pNMLV->iItem);
    }
    else
    {
    TRACE("Item %d does't change the check-status\n", pNMLV->iItem);
    }

    *pResult = 0;
    }

    6 调试
    在debug环境下,改变checkbox的选中状态,查看输出信息。 `

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。