VS 2010 기준 설명 입니다.
목차
0. 들머리
1. 추가
2. 멤버 변수 추가
3. 지우기
4. 글자 색깔 지정 함수
5. 글자 추가 함수
6. 글자 추가 해보기
===============
0. 들머리
1) Rich Edit 2.0 Control 은 Edit Control 보다 여러 가지 기능이 더있다.
전 사실 내부 글자들 의 색깔을 바꾸기 위해서 처음 사용 시작 이었읍니다.
음, "Ctrl+마우스 스크롤" 하니 글자 크기도 바뀌네요
1. 추가
1) ToolBox > Rich Edit 2.0 Control > Dialog 에 그리기

2). ID 바꾸기
> "만들어진 box 를 마우스로 선택 > Property > ID" 를 보시면 "IDC_RICHEDIT21" 와 같이 되어 있는데, 필요 하면 바꾸시고,
> 전 바꾸지 않고 그냥 씁니다

3) AfxInitRichEdit() 추가
> 위 1), 2) 상태에서 컴파일 하면 에러는 없는데, 실행이 안되는 군요.
> ~.cpp 파일에서 " AfxInitRichEdit() " 를 추가 합니다.
CDlg_Main::CDlg_Main(CWnd* pParent /*=NULL*/)
: CDialogEx(CDlg_Main::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
AfxInitRichEdit2(); // 추가 한것
}
> BOOL CDlg_Main::OnInitDialog() 에서 추가 해 봤더니 실행 안되고 여기 CDlg_Main::CDlg_Main() 에 추가 하면 실행 되네요.
2. 멤버 변수 추가
1) 박스 에서 마우스 오른쪽 버튼 > Add Variable

2) 나오는 팝업 창에서 > Variable Name 에 > "m_Disp" 라 하시고, > [Finish] 선택 합니다.
m_Disp 말고, 아무거나 쓰셔도 됩니다. "m_" 은 멤버변수라는 뜻입니다.,
3) Header 파일 에 확인 하시면, "CRichEditCtrl m_Disp;" 와 같이 1줄 추가 된거 있고,
4) Cpp 파일에는 "DDX_Control(pDX, IDC_RICHEDIT21, m_Disp);" 이 추가 된거 확인 됩니다.
3. 지우기
> 내부 모든 글자 지우기 는 아래 4가지중 골라 쓰셔요
m_Disp.SetWindowText(NULL);
m_Disp.SetText(_T(""));
m_Disp.Clear();
m_Disp.EmptyUndoBuffer();
4. 글자 색깔, 효과 지정 함수
int CDlg_Main::setColorREdit(COLORREF color, DWORD effect) // color=RGB( 255,0,0) , effect= CFE_BOLD | CFE_ITALIC
{
CHARFORMAT cf;
// Initialize character format structure
memset(&cf, 0, sizeof(CHARFORMAT));
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_COLOR | CFM_EFFECTS; // CFM_ : Mask,
cf.dwEffects = effect; // 효과 설정, To disable CFE_AUTOCOLOR, // CFE_BOLD | CFE_ITALIC;
cf.crTextColor = color; // Color 설정
// Set insertion point to end of text
// m_Disp.SetSel(-1, -1);
// Set the character format
m_Disp.SetSelectionCharFormat(cf);
// m_Disp.ReplaceSel(strText);
return 0;
}
5. 글자 추가 함수
// 이 함수는 Edit Control 과 Rich Edit Control 2 에서 쓸 수 있다.
// 남은 글자수가 1000 개가 안되면, 처음 1000글자 지우고 쓴다.
void CDlg_Main::wCsDisp( CString cS ){
int nLength;
nLength = m_Disp.GetWindowTextLength(); // 글자수 확인
if( (unsigned int)(nLength + 1000) > m_Disp.GetLimitText() ) { // 남은 글자 수가 1000 개 가 안되면, 1000개 지운다.
m_Disp.SetSel(1, 1000); // 처움 부터 1000 개
m_Disp.Clear(); // 지우고
nLength = m_Disp.GetWindowTextLength(); // 다시 글자수 확인
}
// m_Disp.SetSel(nLength, nLength); // put the selection at the end of text
m_Disp.SetSel(-1, -1); // 커서 위치를 맨 뒤로 이동
m_Disp.ReplaceSel(cS); // replace the selection
// m_Disp.SetFocus(); // 마지막 텍스트를 Focus
}
> 최대 글자수는 GetLimitText() 이며 32767 정도 로 나오네요... 흠,,, rich 는 거의 무한대 처럼 말하던데
GetLimitText 함수가 rich edit 가 아니고 그냥 edit 함수 인가 ?
6. 글자 추가 해보기
setColorREdit( RGB( 255, 0, 0), CFE_ITALIC ); wCsDisp(_T("빨강, 기울여\n"));
setColorREdit( RGB( 0, 0, 255), CFE_BOLD ); wCsDisp(_T("파랑, 굵게\n"));
setColorREdit( RGB( 0, 0, 0), 0 ); wCsDisp(_T("검정, 보통\n"));
> 결과

> 수고 하셨읍니다.
'개발 > mfc' 카테고리의 다른 글
| visual studio 에서 dos (win32) project 시작 하기 (0) | 2025.09.08 |
|---|---|
| mfc, Static Text 글자,바닦에 빛깔 입히기 (0) | 2025.09.03 |
| mfc, 일반 Class 추가 하기 (0) | 2024.12.16 |
| mfc, Visual Studio project 명, 이름 변경하기 (1) | 2024.11.18 |
| mfc, List Control Cell값 수정 edit, 변경 하기 - sample source (2) | 2024.11.15 |