zoukankan      html  css  js  c++  java
  • CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理

    LVN_BEGINDRAG 鼠标左键正在被触发以便进行拖放操作(当鼠标左键开始拖拽列表视图控件中的项目时产生)

    LVN_BEGINRDRAG 鼠标右键正在被触发以便进行拖放操作(当鼠标右键开始拖拽列表视图控件中的项目时产生)

    LVN_BEGINLABELEDIT 开始编辑项的文本

    LVN_COLUMNCLICK 单击列(当鼠标单击列表视图控件列标题时产生)

    NM_CLICK 当鼠标单击列表视图控件时产生

    LVN_COLUMNCLICK 单击列

    LVN_DELETEALLITEMS 删除所有项

    LVN_DELETEITEM 删除某个项

    NM_DBLCLK 当鼠标双击列表视图控件时产生

    LVN_ENDLABELEDIT 结束对项文本的编辑

    LVN_GETDISPINFO 请求需要显示的信息

    LVN_GETINFOTIP 请求显示在工具提示窗口内的附加的文本信息

    LVN_HOTTRACK 鼠标滑过某个项

    LVN_INSERTITEM 当向列表视图控件插入项目时产生

    lVN_ITEMACTIVATE 激活某个项

    LVN_ITEMCHANGED 某个项已经发生变化

    LVN_ITEMCHANGING 某个项目正在发生变化

    NM_KILLFOCUS 当视表列图控件失去焦点时产生

    LVN_KEYDOWN 某个键被按下

    LVN_MARQUEEBEGIN 开始某个边框选择

    NM_OUTOFMEMORY 当内存溢出时产生

    LVN_ODCACHEHINT 虚拟列表控件的显示区域的内容发生了变化

    LVN_ODSTATECHANGED 虚拟列表的控件的某个项或某个范围内的项已经发生变化

    LVN_ODFINDITEM 需要拥有者查找一个特定的回调项

    NM_RCLICK 当鼠标右键单击列表视图控件时产生

    NM_RDBLCLK 当鼠标右键双击列表视图控件时产生

    NM_SETFOCUS 当列表视图控件获得焦点时产生

    LVN_SETDISPINFO 父窗口必须更新控件为项所维护的信息

    注解:

    HDN:Header Notify
    LVN:ListView control Notify 
    NM:Notify Message
    TVN:TreeView control Notify

    LVN_ITEMCHANGED消息的处理

    消息处理函数:

    void C***Dlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    
    if(pNMListView->uChanged==LVIF_STATE)
    {
    if(pNMListView->uNewState & LVIS_SELECTED)
       {
        //处理内容
        int nItem=pNMListView->iItem;
        CString value[6];
        for(int i=0;i<6;i++)
        {
         value[i]=m_List.GetItemText(nItem,i);
        }
       }
    }
    *pResult = 0;
    }

     消息处理函数中的两个if条件句一定要有,否则可能出现多次进入处理内容的问题。

    鼠标双击列表项事件的处理

    响应NM_DBLCLK消息:

    void CDisSalaryDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) 
    {
        NM_LISTVIEW *pNMListView=(NM_LISTVIEW *)pNMHDR;
        int nItem=pNMListView->iItem;
        if(nItem>=0 && nItem<m_List.GetItemCount())//判断双击位置是否在有数据的列表项上面
        {
            .............
        }
    
        *pResult = 0;
    }

          消息处理函数中的if语句很重要,用于判断双击位置是否在有数据的列表项上面。因为NM_DBLCLK消息是CListCtrl控件(整体)消息,只要是在CListCtrl控件范围之内执行此事件就会产生该消息,而不一定要在有数据的列表项上面。

  • 相关阅读:
    10 种保护 Spring Boot 应用的绝佳方法
    Redis 如何分析慢查询操作?
    Spring Boot 主类及目录结构介绍
    Redis 再牛逼,也得设置密码!!
    Spring Data Redis 详解及实战一文搞定
    Spring Boot Redis Cluster 实战干货
    超详细的 Redis Cluster 官方集群搭建指南
    Redis Linux 安装运行实战全记录
    hdu 4790 Just Random (思路+分类计算+数学)
    poj 1328 Radar Installation(贪心)
  • 原文地址:https://www.cnblogs.com/hongfei/p/2832806.html
Copyright © 2011-2022 走看看