CListCtrl 列表框如何隐藏选中的一行,或者把选中的行的高度设置为0也一样,不要说DeleteItem();就是不想删除。。因为删除选中的行,之后的行的行号都会有变化,那么我不想删除行之下的行号有变化所以想设置高度为0。可以参考迅雷下载的取消下载按钮。取消某一行不下载了,但是后续的其他的文件也可以下载
因为我把行号和线程号绑定一起了,所以不希望删除某行后,其他的行号有所变化
谢谢提出意见 CFont m_ListFont;
m_ListFont.CreateFont(4, 0, 0, 0, FW_THIN, 0, 0, 0, ANSI_CHARSET, 
        OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, 
        DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, _T("ËÎÌå")); 
m_ListCtrl.SetFont(&m_ListFont); 这段代码虽然可以设置行号的高度,但是设置的是每一行的高度,我只要设置我所选中行的高度就可以了

解决方案 »

  1.   

    SetItemState
    SetItem
    都可以设置指定列表项的属性
      

  2.   

    不是很明白。能否详细点。。我最近才学mfc的。。
      

  3.   

    http://www.codeproject.com/KB/list/supergrid.aspx
    有点像这样的?
      

  4.   

    int iIndex;
    POSITION SelectedItemPos = m_list.GetFirstSelectedItemPosition();
    while (SelectedItemPos){
        iIndex = m_list.GetNextSelectedItem(SelectedItemPos);
        m_list.SetItemState(iIndex, 0, LVIS_SELECTED|LVIS_FOCUSED);
    }
      

  5.   

    ON_WM_MEASUREITEM_REFLECT() 响应如上消息;   并改变响应函数如下; afx_msg   void   MeasureItem(LPMEASUREITEMSTRUCT   lpMeasureItemStruct); void   CXXXListCtrl::MeasureItem(LPMEASUREITEMSTRUCT   lpMeasureItemStruct) 

              lpMeasureItemStruct-> itemHeight   =   m_nItemHeight;   (m_nItemHeight即你想要的高度) 
    } void   CXXXListCtrl::SetItemHeight() 
    { CRect   rcWin; GetWindowRect(&rcWin); WINDOWPOS   wp; wp.hwnd   =   m_hWnd; wp.cx   =   rcWin.Width(); wp.cy   =   rcWin.Height(); wp.flags   =   SWP_NOACTIVATE   |   SWP_NOMOVE   |   SWP_NOOWNERZORDER   |   SWP_NOZORDER; SendMessage(WM_WINDOWPOSCHANGED,   0,   (LPARAM)&wp); 
    } ListCtrl创建后,   如果收到WM_WINDOWPOSCHANGED消息,   它会调用计算行高的函数MeasureItem(...),   你在这个函数里面设定行高即可; http://www.codeproject.com有更详细的说明; 
      

  6.   


    我试试了,我把你的代码添加到我的mfc对话框程序里面去了,然后在按钮1里面调用SetItemHeight();
    但是行高没有改变啊。。
      

  7.   

    ON_WM_MEASUREITEM_REFLECT() 
    自绘也只能改变所有行的行高。因为我把行号和线程号绑定一起了...Setitemdata,把数据与线程号绑定更好,这样就可以通过删除Item来实现隐藏了。用其他的表格控件更好 MFCGridCtrl等就可以实现功能需求了,改变单行高度,隐藏选定行等等
      

  8.   

    同意‘用其他的表格控件更好 MFCGridCtrl等就可以实现功能需求了,改变单行高度,隐藏选定行等等’
      

  9.   

    要改变行高的话,要自己重写CListCtrl
    重写 MeasureItem()
      

  10.   

    CListCtrl貌似不行。
    你非要用。
    那就想个变通的方法。
    要不实现自己的CMyListCtrl.
      

  11.   

    http://www.codeproject.com/KB/list/MultilineListControl.aspx
      

  12.   

    Clistctrl中写一个实现行高设置的函数就行