저두 전에 같은 문제로 상당히 골머리를 앓았는데요.............. ^^;;;
님을 보니 옛날의 저를 보는 것 같아서 몇 글자 올립니다.
결과적으로 자동스크롤을 하기 위해서는 위의 분이 말씀한 것처럼 LineScroll()함수
를 적용하면 되지만 가장 중요한 문제는 이 함수의 인자에 적절한 값을 전달하는 것이
지요.
그래서 다음과 같이 하면 됩니다.
void CWsTelnetView::AutoScroll(int VSize) { int nDoLineScroll = m_richeditPlay.GetLineCount() - VSize - m_richeditPlay.GetFirstVisibleLine(); if( nDoLineScroll> 0 ) m_richeditPlay.LineScroll( nDoLineScroll ); }
위와 같은 AutoScroll()함수를 멤버로 추가하여 필요한 곳에서 호출하여 사용하면 됩
니다.
단, 위의 소스에서 m_cView는 출력기능을 하는 리치에디트 컨트롤의 컨트롤형 변수입
니다. 그리고 AutoScroll()의 인수로 넘어오는 VSize는 화면상의 리치에디트 컨트롤
의 수직사이즈 입니다. 예를 들어 화면의 수직크기가 문장 20개가 들어올 수 있는 크
기라면 AutoScroll()함수를 호출하는 곳에서 인수로 20을 넘기면 되지요. 그리고 노파
심에서 한마디 더하면 이 함수를 호출하기 전에는 컨트롤과 변수형 멤버변수 간의 데
이터 전송이 다 끝난 후여야겠지요 (UpdateData() & UpdateData(false))
저도 이곳에서 자동스크롤에 대한 답변들을 보았는데 약간 미흡한 점들이 있더군요
예를 들면 어떤 답변은 항상 아래 행 입장만 고려하여 사용자가 만에 하나 스크롤을
올려버리면 제대로 동작이 안될 것으로 예상되는 것들이었습니다.
어쨋든 조금이나마 도움이 되었으면 합니다.
|