리치에디트 컨트롤 사용하기
1) AfxInitRichEdit();
App
클래스의 InitInstance 함수에서 AfxInitRichEdit 함수를 호출하여 Common Control Library 초기화시킵니다.

2)
워드랩 하기
// WrapNone (
워드랩 않하기)
SetTargetDevice(NULL, 1);

// WrapToWindow (
워드랩 하기)
SetTargetDevice(NULL, 0);

3)
원하는 구문만 색상및 폰트변경하기

CRichEditCtrl m_reChat;
다음 함수는 m_reChat라는 이름의 리치 에디트 컨트롤에 strTextIn으로 지정한 메시지를 추가합니다. crNewColor 지정한 색상과 sSize 지정한 크기와 lpszFontName으로 지정한 글꼴로 만들어 추가합니다.


void Cxxx::AddText(CString &strTextIn, COLORREF &crNewColor, int sSize, LPCSTR lpszFontName)
{
  //
리치에디트 컨트롤의 끝에 문자열 추가하기
  int iTotalTextLength = m_reChat.GetWindowTextLength();
  m_reChat.SetSel(iTotalTextLength, iTotalTextLength);
  m_reChat.ReplaceSel((LPCTSTR)strTextIn);
  int iStartPos = iTotalTextLength;

  //
인자로 넘어온 색상값과 폰트크기로, CHARFORMAT 설정
  CHARFORMAT cf;
  cf.cbSize    = sizeof(CHARFORMAT);
  cf.dwMask    = CFM_COLOR | CFM_UNDERLINE | CFM_BOLD | CFM_FACE | CFM_SIZE;
  cf.dwEffects  = (unsigned long)~( CFE_AUTOCOLOR | CFE_UNDERLINE | CFE_BOLD);
  cf.crTextColor  = crNewColor;//RGB(0, 0, 0);
  cf.yHeight = sSize * 20;
  strcpy(cf.szFaceName, lpszFontName);  

  //
새로추가된 부분에 색상및 폰트 속성 적용
  int iEndPos = m_reChat.GetWindowTextLength();
  m_reChat.SetSel(iStartPos, iEndPos);
  m_reChat.SetSelectionCharFormat(cf);
  m_reChat.HideSelection(TRUE, FALSE);
  m_reChat.LineScroll(1);
}

Posted by Real_G