zoukankan      html  css  js  c++  java
  • 获取ListControl控件中(复选框)CheckBox的状态

    原文地址:http://blog.chinaunix.net/uid-20680966-id-1896376.html

    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<LPNMLISTVIEW>(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<LPNMLISTVIEW>(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 ", pNMLV->iItem);

    }

    else if((pNMLV->uOldState & INDEXTOSTATEIMAGEMASK(2)) /* old state : checked */   

    && (pNMLV->uNewState & INDEXTOSTATEIMAGEMASK(1)) /* new state : unchecked */   )

    {   

    TRACE("Item %d is unchecked ", pNMLV->iItem);

    }

    else

    {   

    TRACE("Item %d does't change the check-status ", pNMLV->iItem);

    }
    *pResult = 0;

    }

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

  • 相关阅读:
    Linux下vi和vim模式相互切换
    Linux文件系统目录
    华硕笔记本(UEFI)支持U盘启动
    什么是RSS feed?订阅RSS有什么好处?
    JSTL的时间格式化标签的使用
    token session区别 以及JWT无状态token
    c++ 重载成员函数的地址如何获取
    c++ __VA_ARGS__
    协程任务调度器
    yield return 1
  • 原文地址:https://www.cnblogs.com/CocoWang/p/4097077.html
Copyright © 2011-2022 走看看