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
[1799] Re:[질문] 리치에디트의 Font속성에 관하여
박지훈.임프 [cbuilder] 3858 읽음    1999-08-18 00:00
: 안녕하세요...임프님...
: 우선..밑의 답변에 감사드립니다...
: 덕분에...금방 해결되었습니다...
:
: (-.-)(_._)(-.-)   꾸버억~~~~
:
: 글구..또 질문을 하려고 합니다..
: 리치에디트에서 폰트의 속성말이에요..
: 리치는 워드처럼..여러가지 속성의 폰트를 동시에 사용할수 있잖아요...그런데..이 여러가지 속성으로 기록된 스트링을 캔바스위에서 뿌릴려고 하는데...요..캔버스위에..뿌리고..캔바스상의 폰트도 바꾸고 다 하겠는데...리치의 폰트속성 말이죠~~
: 이걸 캔바스위에도 그대로 적용하려니...제가 생각나는 방법은 1바이트씩..한글이면..2바이트씩...끊어서 하나하나 검사해서 뿌리는 방법밖엔~~~~    --;
:
: 요걸..어떻게 할 방법이 없을까요???
: 리치 컴포 전체의 여러 폰트속성을 한꺼번에..적용시키는 방법은 없을까요??
:
: 그럼...또 다시 답변 기다리겠습니다...
:



임펠리테리입니다.

먼저.. 한가지 확실히 해둘 것은, 간단한 방법은 없다는 것입니다.
몇가지 가능성만 제시해드리죠.

첫번째로 생각해 볼 수 있는 방법은, 말씀하신 것처럼, 리치에디트에 있는
텍스트를 한 문자씩 폰트를 알아내어 뿌리는 방법입니다. 역시.. 말씀하신 것처럼
그렇게 좋은 방법은 못됩니다.

두번째 방법은, 리치에디트의 내용을 rtf 포맷으로 만들어 직접 파싱(해석)하면서
뿌려주는 것입니다. 꼭 파일로 저장할 필요는 없고, SaveToStream 메소드로
메모리 스트림으로 저장한 후 그 내용을 파싱해 나가면 됩니다. 하지만, 이 방법에서는
rtf 포맷을 직접 파싱해야 하는 무리가 있겠죠?

세번째 방법...
이것은 에디트 컨트롤류에 공통적으로 적용되는 워드브레이크 기능을 이용하는 것입니다.
워드 브레이크란, 컨트롤키를 누르고 레프트/라이트 방향키를 누르면 단어 단위로
커서가 이동하는 기능을 말합니다. 하지만 이것이 워드 브레이크의 전부는 아니고,
리치에디트의 경우에는 폰트가 바뀔 때에도 워드브레이크가 발생합니다. 예를 들어,
리치에디트에 다음과 같은 문자열이 있다고 합시다.
"이것은 리치에디트입니다."
여기서, "이것은 리치" 까지가 굴림체로 되어있고, "에디트입니다." 가 궁서체로
되어있다면, '치'와 '에' 사이에서 워드브레이크가 발생합니다. (물론 '리' 앞에서도
발생합니다. 스페이스로 나누어졌으니까요.) 그래서 이 문자열의 시작 위치에서
컨트롤+오른쪽 키를 누르면, '리'앞에서 한번 멈추고, 다시 한번 누르면 '에' 앞에서
다시 한번 멈춥니다.

이 기능을 활용하면, 폰트가 바뀌는 위치를 알아낼 수 있습니다. 사실, 폰트가 바뀌지 않는,
스페이스나 엔터키 등의 위치에서도 멈추긴 합니다만, 적어도 한문자씩 폰트를
알아내는 첫번째 방법보다는 훨씬 효율적일 수 있습니다.
워드브레이크 위치를 알아내기 위해서는, EM_FINDWORDBREAK 메시지를 주면 됩니다.

짐작하시겠지만, 세번째 방법이 제가 이전에 해본 방법입니다. 원하시는만큼은
효율적이지 못하지만, 적어도.. 한 문자씩 알아내는 것보다는 몇배 이상 효율적이죠.

그럼 참고하시길...

+ -

관련 글 리스트
1794 [질문] 리치에디트의 Font속성에 관하여 강호준 3570 1999/08/17
1799     Re:[질문] 리치에디트의 Font속성에 관하여 박지훈.임프 3858 1999/08/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.