메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

C/C++/MFC


http://www.devpia.com/Forum/BoardView.aspx?no=75407&ref=75011&page=2&forumname=VC_QA&stype=&KeyW=%b8%ae%c4%a1%bf%a1%b5%f0%c6%ae+%c4%c1%c6%ae%b7%d1+%bb%e7%c0%cc%c1%ee&KeyR=titlecontent

데브피에서그대로 가져온겁니다


CRichEditCtrl을 ReadOnly 속성을 주고 텍스트 출력을 하고 있습니다.

뭐 체팅창과 같은걸 생각 하시면 될꺼에요.

체팅창처럼.. 맨 마지막 라인이 에디터 영역의 마지막 줄에 맞추어서

출력 할 수 있는 방법을 알고 싶습니다..

지금 마지막라인에 글을 추가 하기 위해서는 다음과 같은 방법을 사용하고 있습니다.

물론 자동 스크롤도 셋팅 되어 있습니다.

m_richText.SetSel (-1, -1);
m_richText.ReplaceSel( sData );

여러가지 방법을 동원해 봤지만..깔끔 하지가 않아서...

고수님들의 도움을 부탁합니다.

  2001-02-12 오전 10:01:00   /  번호: 75045  / 평점:  (-)  
 LineScroll  윤영준 / darkland  
윤영준님께 메시지 보내기  윤영준님을 내 주소록에 추가합니다.  윤영준님의 블로그 가기   
LineScroll함수 이용하시면 되는데요.. ^^:
 
  2001-02-13 오전 5:09:00   /  번호: 75407  / 평점:  (-)  
 [답변] 자동스크롤 김아람 / alkim  
김아람님께 메시지 보내기  김아람님을 내 주소록에 추가합니다.  김아람님의 블로그 가기   

저두 전에 같은 문제로 상당히 골머리를 앓았는데요.............. ^^;;;

님을 보니 옛날의 저를 보는 것 같아서 몇 글자 올립니다.

결과적으로 자동스크롤을 하기 위해서는 위의 분이 말씀한 것처럼 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))

저도 이곳에서 자동스크롤에 대한 답변들을 보았는데 약간 미흡한 점들이 있더군요

예를 들면 어떤 답변은 항상 아래 행 입장만 고려하여 사용자가 만에 하나 스크롤을

올려버리면 제대로 동작이 안될 것으로 예상되는 것들이었습니다.

어쨋든 조금이나마 도움이 되었으면 합니다.

  2001-02-13 오후 12:20:00   /  번호: 75512  / 평점:  (-)  
         저도 같은 방법을 사용했지만 VSize계산이... 조영철 / windcity  
조영철님께 메시지 보내기  조영철님을 내 주소록에 추가합니다.  조영철님의 블로그 가기   
저도 결국 같은 결론에 도달했습니다.

근데 문제는 님이 말하신.. VSize...

즉 리치컨트롤의 현제 영역에 몇줄의 글이 들어가는가를 알아내어야 하는데.

후훗. 이게 만만치 않더군요.

저의 경우는 리치컨트롤 사이즈가 고정 되어 있지 않아서

지금 쓰고 있는 방법은 리치컨트롤 사이즈와, 폰트크기로

적당히 하고는 있는데.. 폰트크기는 Point단위고 화면은 픽셀 단위라서

혹시.. 꽁수 없나요..?