我建的单文档工程,创建了一个clistctrl控件cmylist m_list,然后再cmylist中创建了一个cstatic,这个cstatic当然是clistctrl的子控件,我把它放置在clistctrl的最下面一行,位置固定,但是这样就出现了一个问题,最后一行最后一条记录被挡住了,请问我该如何做才能使这条记录可见,并不改变cstatic的位置。我想着是不是要处理滚动消息,判断滚动条到最后了增加一个空行,但是空行会影响我整个数据,我不希望把它算到整个记录行里面,请问该如何做呢?

解决方案 »

  1.   

    自己封装一个CListCtrl类,在最后一行添加这个CStatic。。始终保持在最后一行!
      

  2.   

    我不是要保持cstatic在最后一行的问题,问题是cstatic已经在最后一行了,但是它挡住了我最后一行的记录,问题是如何让最后一行的记录显现,大概原理应该是是最后一行保持空行,然后cstatic遮住的是空行,记录不会被挡住,但是这如何实现呢,如果给最后一行插入空行,他会影响排序操作,比如说一排序,空行会置前等,我的意思是这一行永远出在最后一行
      

  3.   

    CStatic控件透明模式 就可以了
      

  4.   

    自己写一个有clistCtrl控件的 窗口,在listctrl 下面创建一个静态文本,
      

  5.   

    tooltip是什么?
    我现在有一种解决办法,但是还不完善,就是设置滚动条的范围
      SCROLLINFO si;
        ZeroMemory(&si, sizeof(si));
        GetScrollInfo(SB_VERT, &si);
        si.nMax += 5;
        SetScrollInfo(SB_VERT,&si);
    获取的nmax为记录的大小在加上几个数就可以有空白区域了,但是问题是滚动条第二次滚动时,nmax右边为原来的值,该怎样解决啊,第一次按下鼠标拖动滚动条为第一次操作,鼠标抬起后在拖动为第二次,纠结中
      

  6.   


    1.cpptooltips这个神器,有主动显示tips的功能,非常不错,最近还在用
    2.CListCtrl冻结效果,就是EXCEL中的效果,实质是2个ListCtrl,做起来比较麻烦的。
      

  7.   


    大神,我现在不冻结了,该做的都做完了,现在就是这个滚动条的问题,因为cstatic遮住了最后一行,所以我要使最后一行可见,我使用的是在插入数据时setscrollinfo,将si.nmax置为比获取的大一,这样运行出来后在第一次拖动时,即将竖滚动条拖到最底下,会显出差不多一行的空白,但是我松开鼠标后,或这再次拖滚动条时,滚动条还是原来的样子。
      

  8.   

    "这个cstatic当然是clistctrl的子控件"
    能不能‘ClipChildren’
      

  9.   


    我已经处理过了ClipChildren
      

  10.   

    void CMyListCtrl::PreSubClassWindow()
    {
    Modify(0,WS_CLIPCHILDREN);
    CRect rc;
    GetClientRect(&rc);
    rc.bottom -= 16;
    rc.top=rc.bottom-16;
    m_pSt=new CStatic;
    m_pSt->Create("Static in the bottom of a ListCtrl",SS_CENTER,rc,this);// may ID=2000
    m_pSt->ShowWindow(SW_SHOW);
    CListCtrl::PreSubClassWindow()
    }Static 寄生在 listctrl 中,与 listctrl 本身任何操作无关。