|
안녕하세요.
씨빌더로 공부 중에 질문이 생겨 글을 남기게 되었습니다.
첨부 파일을 보시면 편집화면의 검은색 상자는 리치에디트 입니다.
오른쪽 화면의 검은 상자는
TRect로 사각형 영역을 정해주고 Canvas->Handle을 이용하여 DrawText로
리치에디트의 내용을 뿌려주는 공간 입니다.
글자마다 색지정, 글자크기 등 서식이 다를 수 있어
DrawText로 한글자 뿌리고 사각형 영역의 left값을 이동하여 표현하고 있습니다.
그런데 언더라인 서식을 지정했는데 오른쪽 화면의 이미지처럼 글자 끝보다 한칸더 밑줄이 그어집니다.
즉 공백 데이터가 삽입 되어 있는것 같습니다.
버퍼에 리치 에디트의 텍스트 내용을 저장하는 소스는 다음과 같습니다.
memset(buff,0,1024);
sprintf(buff, Form1->RichEdit1->Lines->Text.c_str());
buff[strlen(buff)-2] = 0;
디버그시 Watch를 이용하여 buff의 내용을 보면 문자 뒤에는 공백이 없는데 말입니다.
다음 소스는 DrawText로 날릴 때 코드 입니다. for문으로 돌리고 있습니다.
Form1->RichEdit1->SelStart = i;
Form1->RichEdit1->SelLength = 1;
Canvas->Font->Color = Form1->RichEdit1->SelAttributes->Color;
Canvas->Font->Name = Form1->RichEdit1->SelAttributes->Name;
Canvas->Font->Size = Form1->RichEdit1->SelAttributes->Size;
Canvas->Font->Style = Form1->RichEdit1->SelAttributes->Style;
Canvas->Brush->Style = bsClear;
DrawText(Form1->Canvas->Handle, &buff[i] ,1,&rStandard ,0);
//사각형 영역(left) 글자 크기 한 개만큼 옆으로 이동
rStandard.left = rStandard.left+Canvas->TextWidth(buff[i]);
어째서 이렇게 해결이 안되고 있습니다.
기초가 부족한 상태에서 이것 저것 시작 해서 그런것인지...
사이트의 DrawText 관련 내용은 정말 쥐 잡듯이 찾은 것 같은데 해결이 안되네요.
소중한 답변 기다리고 있겠습니다.
답변 주신 분들께 미리 감사 드립니다.
|