C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[72649] DrawText시 제일 끝 공백생성 관련 질문 입니다
초보입니다ㅠㅠ [islovemin] 4085 읽음    2015-05-13 15:40
안녕하세요.

씨빌더로 공부 중에 질문이 생겨 글을 남기게 되었습니다.

첨부 파일을 보시면 편집화면의 검은색 상자는 리치에디트 입니다.

오른쪽 화면의 검은 상자는

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 관련 내용은 정말 쥐 잡듯이 찾은 것 같은데 해결이 안되네요.

소중한 답변 기다리고 있겠습니다.

답변 주신 분들께 미리 감사 드립니다.

+ -

관련 글 리스트
72649 DrawText시 제일 끝 공백생성 관련 질문 입니다 초보입니다ㅠㅠ 4085 2015/05/13
72652     Re:DrawText시 제일 끝 공백생성 관련 질문 입니다 3715 2015/05/14
72654         Re:Re:DrawText시 제일 끝 공백생성 관련 질문 입니다[해결] 초보입니다ㅠㅠ 3805 2015/05/14
72656             Re:Re:Re:DrawText시 제일 끝 공백생성 관련 질문 입니다[해결] 아루스 3829 2015/05/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.