在Edit控件中,当文字超过Edit框的显示大小的时候,需要显示竖直滚动条,以便用户滚动查看。
当还没有超过显示大小的时候,自动隐藏滚动条。如何知道,什么时候需要去显示滚动条,什么时候不需要,需要获得哪些消息?大家给点思路啊。

解决方案 »

  1.   

    你说的是多行edit.这时系统的事吧,若要改写的话要改写消息处理的入口吧,好像比较麻烦
      

  2.   

    显示的字符行高度数超出了Edit的高度就要滚动条了啊。
    还有不大明白你的意思,你是要自己做Edit控件吗?
      

  3.   


    我是在mobile上做开发,mobile不支持richedit。郁闷!
      

  4.   


    原来如此
    可以这样
    把这个edit放到一个对话框上
    滚动条为灰色的时候就把edit扩大将滚动条扩到对话框之外
    如果滚动条启用就在缩回来
    也就是在edit外加一个容器框一下
      

  5.   

    那个思路不太通用。首先计算 edit 可容纳的行数具体方法是 GetRect(&rect) 和 GetTextMetrics(&tm),
    行数 = rect.bottom / tm.tmAscent处理 EN_CHANGE然后如果 GetLineCount 小于总行数,则把 WS_VSCROLL 去掉,否则加上 WS_VSCROLL
      

  6.   

    谢谢楼上各位。
    问题解决了。代码如下: TEXTMETRIC tm;
    CRect rect;
    m_edt.GetClientRect(&rect);
    CDC* pdc = m_edt.GetDC();
    ::GetTextMetrics(pdc->m_hDC,&tm);
    m_edt.ReleaseDC(pdc);
    into m_nLineCount = rect.bottom/(tm.tmHeight-1.5);void CMyDlg::OnEnChangeEdit()
    {
    // TODO:  在此添加控件通知处理程序代码 int nLine = m_edt.GetLineCount();
    if( nLine > m_nLineCount)
    {
    m_edt.ShowScrollBar(SB_VERT, TRUE);
    }
    else
    {
    m_edt.ShowScrollBar(SB_VERT, FALSE);
    }
    }