MFC-NM_CLICK鼠标左键点击CListCtrl控件消息

NM_CLICK 是鼠标左键点击CListCtrl控件客户区时激发的消息

添加消息函数

选中控件-->

 

 

复制代码
void CCListCtrlDlg::OnNMClickList4(NMHDR* pNMHDR, LRESULT* pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    //NM_CLICK 这个是鼠标左键点击CListCtrl控件客户区时激发的消息

    int han = pNMItemActivate->iItem; //获取单击的行号
    /*
    【最好设置:LVS_EX_FULLROWSELECT //选择整行;否则只有单击项头才有效】
    */

    str.Format(_T("行号han=%d\r\n"), han);
    OutputDebugString(str);
    
    int lie = pNMItemActivate->iSubItem;  //获取单击的列号

    str.Format(_T("列号lie=%d\r\n"), lie);
    OutputDebugString(str);

    UINT ns=pNMItemActivate->uNewState;
    str.Format(_T("新状态ns=%d\r\n"), ns);
    OutputDebugString(str);

    UINT olds = pNMItemActivate->uOldState;
    str.Format(_T("老状态olds=%d\r\n"), olds);
    OutputDebugString(str);
    /*
    我的新状态和老状态的返回值 始终=0  不知道什么原因  有知道的请评论区留言
    */

    POINT point = pNMItemActivate->ptAction;  //获取鼠标点击时的坐标
    //以控件客户区为坐标系
    str.Format(_T("point.x=%d    point.y=%d\r\n"), point.x, point.y);
    OutputDebugString(str);

    int nRow;
    CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST4); //窗口句柄转换成类指针
    CPoint ptClicked = pNMItemActivate->ptAction; // 获取鼠标单击位置
    nRow = pListCtrl->HitTest(ptClicked); // 获取鼠标位置所在的行
    
    str.Format(_T("nRow=%d\r\n"), nRow);
    OutputDebugString(str);
    
    *pResult = 0;
}
复制代码

 

 

 

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(580)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-05-02 halcon-gen_cross_contour_xld为每个输入点生成交叉形状的XLD轮廓
2022-05-02 halcon-实例:根据颜色提取想要的对象
2019-05-02 python-类对象的遍历操作
点击右上角即可分享
微信分享提示

目录导航