CListCtrl类在失去焦点的时候,被选择项也会消失怎样一直保持着被选择的状态谢谢~~

解决方案 »

  1.   

    或者属性中Always show selection: TRUE;
      

  2.   

    m_list.SetItemState((direction == 0 ? m_listIndex-1:m_listIndex+1),LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
      

  3.   

    只有自绘,重载CListCtrl,DrawItem虚函数中处理
      

  4.   

    确实需要自绘的,LZ参考一下:http://topic.csdn.net/u/20091201/20/f8d55a81-05a6-42d9-928d-6954f76dccb2.html
      

  5.   

    从CListCtrl派生一个类吧。网上有这类代码。就是添加NM_CUSTOMDRAW的响应函数,在里面可以实现单双行不同颜色,选中行不同颜色:void CListCtrlEx::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    NMLVCUSTOMDRAW* lplvcd=(NMLVCUSTOMDRAW*)(pNMHDR);
    int nRow=(int)lplvcd->nmcd.dwItemSpec;
    switch (lplvcd->nmcd.dwDrawStage)
    {
    case CDDS_PREPAINT:
    *pResult |= CDRF_NOTIFYITEMDRAW;
    break;  
    case CDDS_ITEMPREPAINT:
    //------------------------------------------------------
    // 单行与双行的颜色 
    if(nRow%2 == 1)//单行
    {
    lplvcd->clrTextBk = RGB(255,248,220);
    lplvcd->clrText   = RGB(0,0,0);
    *pResult          = CDRF_NEWFONT; 
    }
    else //双行
    {
    lplvcd->clrTextBk = RGB(176,196,222);
    lplvcd->clrText   = RGB(0,0,0);
    *pResult          = CDRF_NEWFONT; 
    }
    //-------------------------------------------------------

    //------------------------------------------------------
    // 打勾项
    //------------------------------------------------------

    //------------------------------------------------------
    // 选中行
    if(GetItemState(nRow,CDIS_SELECTED))
    {
    lplvcd->nmcd.uItemState &= ~CDIS_SELECTED;
    lplvcd->clrTextBk = RGB(255,255,0);
    lplvcd->clrText = RGB(255,0,0);
    *pResult = CDRF_NEWFONT;
    }
    //------------------------------------------------------

    break;
    default:
    *pResult = CDRF_DODEFAULT; 
    break;
    }
    }
      

  6.   

    不知道为什么,我的代码在SDI视图中能隔行显示不同颜色,而在对话框中就不行
      

  7.   

    对话框有OnCtrlColor消息处理,是不是这个原因?NM的消息处理在返回时指定为TRUE/FALSE的值意义是不一样的。
      

  8.   


    具体查一下MSDN吧 "ON_NOTIFY_EX" 
     子控件接收此消息,处理,返回TRUE,则父窗口无论如何都无法接收那个消息来继续处理。
    子控件接收此消息,处理,返回FALSE,则父窗口此时有机会接收那个消息,并作自己的处理(通常是对此控件的处理)。