哪位高手知道在多行文本框中使滚动条的位置总是处于最下边

yqg163 2003-08-26 09:28:23
我在对话框中加入了一个多行文本框,并用计时器的OnTimer()函数里不断向多行文本框中写字符,
str+="qqqqqqqqqqqqqq",当字符数超过多行文本框的显示行数时文本框的滚动条总是处在最上边,
不能在默认状态下看到新写入的字符,所以想在默认状态下使文本框滚动条总是处于最下边,请哪位高手给予指教。
...全文
265 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonocast 2003-08-26
  • 打赏
  • 举报
回复
CString strTemp;

m_list.InsertColumn(1,"ID",LVCFMT_CENTER ,150);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.ModifyStyleEx(0,WS_EX_CLIENTEDGE);

for(int i = 0; i < 100; i++)
{
strTemp.Format("%d", i);
m_list.InsertItem(0, strTemp);
}


int nMin = 0;
int nMax = 0;
m_list.GetScrollRange(SB_VERT, &nMin, &nMax);
m_list.SetScrollPos(SB_VERT, nMax);

应该就是这样
---------------
May you succeed!
-------------
brainf 2003-08-26
  • 打赏
  • 举报
回复
CEdit 里内容 闪烁的太厉害,如何解决?
想实现一个让CEdit 里的内容每加一行就自动向下滚动一行的功能,
例如以下代码:
for (int i=0;i<=44000;i++)
{
m_strResult.Format("%d : %s\r\n",i, "d");
str+=m_strResult;
m_editResult.SetWindowText(str); //m_editResult 为CEdit成员变量
m_editResult.LineScroll(m_editResult.GetLineCount(),0);
}
可是问题这就出来了,当行数增加到几十行时,每SetWindowText一次光标就到了
第一行,而LineScroll一次光标便跑到了最后一行,便造成了闪烁问题,行数越多,闪
烁的就越厉害,很让人受不了,如何让CEdit数据增加一行之后光标不到第一行,而且
数据还能立即显示出来呢? 我试了一下UpdateData(false) 也会使光标到第一行,好
像不能使用!如何解决?
triout 2003-08-26
  • 打赏
  • 举报
回复
LineScroll()
bcpl 2003-08-26
  • 打赏
  • 举报
回复
写入之后加上
int nLen = edit.GetWindowTextLength();
edit.SetSel(nLen, nLen)

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧