: BCB 초보 김영균입니다.
: 마이컴하고 통신하기 위해 시리얼 통신프로그램을
: 짜고 있는데..
: 제가 짠 함수는 다음과 같습니다.
: inbuf는 시리얼 쓰레드에서 읽어들인 문자들이고
: nByteRead는 읽어들인 바이트수입니다...
: TMemo 에 출력을 하는데 스크롤이 되지 않아서
: 보이는 화면은 맨 첫부분입니다.
: 글자가 출력되고 있는 부분(즉 마지막 부분)이
: 계속 보이도록 스크롤이 자동으로 되게 하려면
: 어떻게 해야 하는지...
:
: // MemoIF는 TMemo입니다...
: void __fastcall TFormMain::ProcessByte(char *inbuf, int nBytesRead)
: {
: int i;
: char Ch;
: AnsiString Buffer;
:
: for(i=0; i<nBytesRead; i++)
: {
: Ch=inbuf[i];
:
: switch(Ch)
: {
: case 0x1B:
: /* 제어코드 처리 */
: break;
: default:
: Buffer += AnsiString( Ch );
: break;
: }
: }
: while(MemoIF->Lines->Count>500)
: MemoIF->Lines->Delete(0); /* 500줄만 저장 */
:
: MemoIF->Text = MemoIF->Text + Buffer;
: MemoIF->SelStart = MemoIF->Text.Length();
: }
임펠리테리입니다.
메모 컨트롤에 내용을 추가하는 코드의 바로 다음에 다음의 한 줄을 넣어서 해보세요.
SendMessage(MemoIF->Handle, WM_VSCROLL, SB_BOTTOM, 0);
물론, 메모가 아니라 리치에디트 등에도 써먹을 수 있습니다. 무조건 가장 아래로
스크롤 하는 코드입니다.
그럼 도움되시길...
|