|
전재득 님이 쓰신 글 :
: 텍스트 에디터를 만들고 있는데요...
:
: RichEdit 를 사용해서 특정한 위치의 문자의 색이나 크기 등을 변경하고
:
: 파일로 저장해서 처음 작성시와 똑같은 색과 크기로 출력하고 싶은데요...
:
: 방법이 없을까요? Font 값은 전체가 아니라 개별적인 것이겠죠 --;
:
:
저두 궁금하기도 해서 한번 찾아봤습니다. TCustomRichEdit의 WMSetFont함수에서 실마리를 찾았습니다.
보니깐 결국엔 SendMessage()함수를 사용해서 글자색을 바꾸더군요.
제가 지금 빌더를 안깔아서 델파이로 작업하고 있기 때문에 델파이로 해본 코드를 그냥 붙여넣기 해서
빌더 형식으로 바꾼거니깐 약간의 실수가 있을지도 모르겠습니다.
우선 폼에 TRichEdit와 버튼 세개를 추가 합니다. 그래서 Button1은 색깔바꾸기, Button2는 저장하기, Button3은 불러오기 입니다.
그리고 Comctrls.hpp를 추가해 주셔야 됩니다.
#include <Comclrls.hpp>
void __fastcall TForm1::Button1Click(TObject* Sender) // 색깔바꾸기
{
TCharFormat Format;
if (RichEdit1->SelText != "")
{
ZeroMemory(&Format, sizeof(TCharFormat));
Format.cbSize = sizeof(TCharFormat);
Format.bPitchAndFamily = DEFAULT_PITCH;
Format.crTextColor = clBlue;
Format.dwMask = CFM_COLOR;
SendMessage(RichEdit1->Handle, EM_SETCHARFORMAT, SCF_SELECTION, LPARAM(&Format));
}
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (SaveDialog1->Execute())
RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
}
void __fastcall TForm1::Button3Click(TObject* Sender)
{
if (OpenDialog1->Execute())
{
RichEdit1->Clear();
RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
}
}
그리고 색깔외에 글자 크기 등등을 바꾸기 원하시면 위의 TCharFormat 구조체의 멤버중에
Format.yHeight 등을 바꿔주시면 됩니다.
EM_SETCHARFORMAT, CharFormat 등에 대한 도움말을 참조하시면 좀더 잘 하실수 있을듯..
그럼 수고하세요~~
|