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

天子骄龙 / 2023-05-03 / 原文

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);

    *pResult = 0;
}