SPRING :: NOTE
[MFC] RichEdit Control 본문
반응형
RichEdit Control 추가
AppName::InitInstance()
{
// 응용 프로그램 매니페스트가 ComCtl32.dll 버전 6 이상을 사용하여 비주얼 스타일을
// 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControlsEx()가 필요합니다.
// InitCommonControlsEx()를 사용하지 않으면 창을 만들 수 없습니다.
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 응용 프로그램에서 사용할 모든 공용 컨트롤 클래스를 포함하도록
// 이 항목을 설정하십시오.
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
/* 이 소스 추가 */
AfxInitRichEdit2();
/* 이 소스 추가 */
AfxEnableControlContainer();
}
AppNameDlg.h 파일에 아래 컨트롤러 및 함수 추가
/* rich edit */
void RsDataAddString(CString strWriteData, COLORREF crTextColor, int sSize);
CRichEditCtrl *pWndRich;
AppNameDlg.Cpp 파일의 Init 코드 작성
/* init Rich Edit */
pWndRich = (CRichEditCtrl*)GetDlgItem(IDC_RICH_LOG);
pWndRich->SetEventMask(pWndRich->GetEventMask() | ENM_CHANGE);
AppNameDlg.cpp 파일에 RichEdit Control 함수 작성
AppName::RsDataAddString(CString strWriteData, COLORREF crTextColor, int sSize)
{
int nLineCnt = pWndRich->GetLineCount();
int nTextLen = pWndRich->GetWindowTextLengthA();
pWndRich->SetSel(nTextLen, nTextLen);
pWndRich->ReplaceSel((LPCTSTR)strWriteData);
int iStartPos = nTextLen;
// Create 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 = crTextColor;
cf.yHeight = sSize * 20;
// WriteData Setting
int iEndPos = pWndRich->GetWindowTextLength();
if (nLineCnt > 1) iStartPos -= nLineCnt;
pWndRich->SetSel(iStartPos, iEndPos);
pWndRich->SetSelectionCharFormat(cf);
pWndRich->HideSelection(TRUE, FALSE);
pWndRich->SendMessage(WM_VSCROLL, SB_BOTTOM, 0);
}
사용 할 부분에서 함수 추가.
RsDataAddString("Logging Stop!\n", RGB(255, 255, 255), 10);
/* 파라미터 값 */
/* RsDataAddString([추가할 문자], [폰트 색상], [폰트사이즈]); */
마우스를 이용하여 커서수정 안되도록 하기 및 개행 문자 적용을 위한 속성값 세팅
// 200 라인 제한 후 RichEdit 비우기.
if (pWndRich->GetLineCount() == 200)
{
// ("", 공백으로 바꿔준다.)
pWndRich->SetWindowTextA("");
}
더 좋은 코드가 있을 것 같지만... 찾기가 귀찮아 임시로 제한한다.. 라인이 3천이 넘어가도 별다른 이상이 없어 그냥 쓰려다 이방법을 찾아 추가.반응형
'Development Language > C · C++ · MFC' 카테고리의 다른 글
[MFC] Modaless(모달리스) 컨트롤 (0) | 2016.04.27 |
---|---|
[MFC] 프로그램 중복 실행 방지하기 (0) | 2016.04.05 |
[MFC] EDIT CONTROL (0) | 2016.03.10 |
[MFC] BUTTON CONTROL (0) | 2016.03.10 |
[MFC] 디렉토리 생성 (0) | 2016.03.07 |
Comments