请教关于Edit控件 滚动条自动隐藏的问题。 在Edit控件中,当文字超过Edit框的显示大小的时候,需要显示竖直滚动条,以便用户滚动查看。当还没有超过显示大小的时候,自动隐藏滚动条。如何知道,什么时候需要去显示滚动条,什么时候不需要,需要获得哪些消息?大家给点思路啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你说的是多行edit.这时系统的事吧,若要改写的话要改写消息处理的入口吧,好像比较麻烦 显示的字符行高度数超出了Edit的高度就要滚动条了啊。还有不大明白你的意思,你是要自己做Edit控件吗? 我是在mobile上做开发,mobile不支持richedit。郁闷! 原来如此可以这样把这个edit放到一个对话框上滚动条为灰色的时候就把edit扩大将滚动条扩到对话框之外如果滚动条启用就在缩回来也就是在edit外加一个容器框一下 那个思路不太通用。首先计算 edit 可容纳的行数具体方法是 GetRect(&rect) 和 GetTextMetrics(&tm),行数 = rect.bottom / tm.tmAscent处理 EN_CHANGE然后如果 GetLineCount 小于总行数,则把 WS_VSCROLL 去掉,否则加上 WS_VSCROLL 谢谢楼上各位。问题解决了。代码如下: 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); }} 在线询问:VS2010 生成的程序为什么会依赖Microsoft.VC90.DebugCRT库呢? 内存泄露! 如何在一个软件系统中建立后方数据库? 简单问题,送分! 一个VC的操作问题 我编的游戏为什么闪烁? 如何在一个对话框中控制另一个对话框的按钮的状态 VC中DLL被VB语言调用问题。 求VC++2010和Oracle数据库连接的方法 SDK程序 对话框相互锁定,不,MessageBox()不在最前 CString写入到char[].HELP! CDialog::Create()方法的疑问
还有不大明白你的意思,你是要自己做Edit控件吗?
我是在mobile上做开发,mobile不支持richedit。郁闷!
原来如此
可以这样
把这个edit放到一个对话框上
滚动条为灰色的时候就把edit扩大将滚动条扩到对话框之外
如果滚动条启用就在缩回来
也就是在edit外加一个容器框一下
行数 = rect.bottom / tm.tmAscent处理 EN_CHANGE然后如果 GetLineCount 小于总行数,则把 WS_VSCROLL 去掉,否则加上 WS_VSCROLL
问题解决了。代码如下: 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);
}
}