티스토리 툴바

★º쥬니's Story...

리치에디트 컨트롤 사용하기
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);
}
 
 
============================================================
 
[리치에디트 컨트롤의 스트링 추가]
 
 
// 리치에디트 컨트롤의 마지막에 문자열 추가
void AddString2RichEdit( HWND hwnd, UINT id, char* pstr )
{
 // 리치에디트 컨트롤 핸들
 HWND hwndRich = GetDlgItem( hwnd, id );
 // 문자열 추가 구조체 선언
 SETTEXTEX settextex;
 
 // 멤버 초기화. ST_SELECTION을 사용하지 않으면, 전체 내용을 덮어씁니다.
 settextex.flags = ST_SELECTION;
 settextex.codepage = CP_ACP;
 
 // settextex 구조체의 형식대로 pstr을 리치에디트 컨트롤에 입력합니다.
 SendMessage( hwndRich, EM_SETTEXTEX, (WPARAM) &settextex, (LPARAM) pstr );
 
 // 추가된 줄을 포함해서 전체 줄 수 계산 : 1-based 인덱스 사용
 int nLines = (int) SendMessage( hwndRich, EM_GETLINECOUNT, 0, 0 );
 
 // 눈에 보이는 첫 번째 줄을 가리키는 인덱스 반환 : 0-based 인덱스 사용
 int nVisibleLine = (int) SendMessage( hwndRich, EM_GETFIRSTVISIBLELINE, 0, 0 );
 
 // 문자열이 추가됐다고 해서, 스크롤이 자동으로 일어나지 않습니다.
 // 추가된 줄이 보이는 만큼 스크롤
 // 스크롤 양 = 전체 줄 수 - ( 눈에 보이는 첫 번째 줄 + 한 // 줄 개수 )
 SendMessage( hwndRich, EM_LINESCROLL, 0, nLines - nVisibleLine - 20 );
}

Posted by ★º쥬니™
:: Study Story..... ::/| C/C++ | l 2007/07/14 05:24
TAG
1  ... 18 19 20 21 22 23 24 25 26  ... 38 

카테고리

분류 전체보기 (38)
:: Project Story... :: (1)
:: Study Story..... :: (32)
:: IT Story..... :: (1)
:: Drama Story.... :: (0)
:: Movie Story..... :: (0)
:: Music Stroy..... :: (0)
:: Book Story...... :: (0)
:: Useful Story..... :: (4)

달력

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31