在List Control表头中,拖动表头的间隔线,改变某一列的宽度的过程中,如何知道拖动的是哪一列?

解决方案 »

  1.   

    OnNotify函数中处理这两种情况NMHDR->Code
    case HDN_BEGINTRACKW:
    case HDN_BEGINTRACKA:
      

  2.   


    嗯,NMHDR->Code的这两个值是处理拖动的,不过好像没有指明,是哪一列?比如我拖动了第3列后面的分割线,在哪里可以捕捉到是第3列?
      

  3.   

    BOOL CXXXDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
    {
    NMHEADER* pHD = (NMHEADER*)lParam;
    if(NULL != pHD)
    {
    switch(pHD->hdr.code)
    {
    case HDN_BEGINTRACKA:
    case HDN_BEGINTRACKW:
    {
    CString str;
    str.Format(_T("%d"), pHD->iItem);
    AfxMessageBox(str);
    }
    break;
    }
    }
    return CDialog::OnNotify(wParam, lParam, pResult);
    }
      

  4.   

    原来用这个结构体接收啊。。
    我一直在用这个NMHDR &nmh = *(NMHDR*)lParam接收。。难怪找不到的= =,多谢斑竹了!