[MFC] Font

Posted by seunggwon
2008. 11. 24. 14:42 IT Note/기타언어

1. 프로젝트 생성
 MFC exe, Dialog-based, “MyFont”
 2. 리소스 편집
 Default control을 지운다.
 Control 추가
 편집상자 추가 : IDC_TEXT, m_text(CString)
 종료버튼 추가 : IDC_EXIT, OnExit(), OnOK();
 그룹상자

3. 편집 상자로부터의 message 처리
 IDC_TEXT, EN_CHANGE message
OnChangeText
 Invalidate() : 다시 그린다.
Compile & Build
 4. 편집 상자의 문장 화면 표시
 CMyFontDlg의 OnPaint
CPaintDC dc(this);
UpdateData();
dc.SetBkMode(TRANSPARENT);
CFont fnt, *oldfnt;
fnt.CreateFont(25, 0, 0, 0, 400, FALSE, FALSE, 0,
   ANSI_CHARSET, OUT_DEFAULT_PRECIS,
   CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
   DEFAULT_PITCH | FF_SWISS, "Garamond");
oldfnt = dc.SelectObject(&fnt);
dc.TextOut(100, 200, m_text);
dc.SelectObject(oldfnt);
 5. Font 크기 변경
Font 크기를 위한 그룹상자(이름: Size)
그룹상자 안에 Radio Button 4개 추가
 IDC_SZ25, IDC_SZ50, IDC_SZ75, IDC_SZ100
이전의 Radio Button처럼, 첫번째만 Group으로 지정한다.
 [View/Resource Symbols] 확인
 Class Wizard, Member variable
 IDC_SZ25, Value, int, m_size
 Radio Button 초기화 : OnInitDialog
 m_size = 0; UpdateData(FALSE);
OnPaint 코드 변경
fnt.CreateFont(25 + 25*m_size, 0, 0, 0, 400, FALSE,
FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS, "Garamond");
dc.TextOut(200, 200, m_text);
IDC_SZ**, BN_CLICKED message 처리 : Invalidate();

6. 글자에 그림자 넣기
 그림자 Check box
IDC_SHADOW, “그림자”
 멤버함수 :  BN_CLICKED, OnShadow(), Invalidate(); 호출
 멤버변수 : Value, int, m_bShadow
 TextOut(200, 200, m_text) 대신에,
if ( m_bShadow ) {
 dc.SetTextColor(RGB(255, 0, 0));
 dc.TextOut(200, 120, m_text);
}
dc.SetTextColor(RGB(0, 255, 0));
dc.TextOut(202, 122, m_text);

7. 다른 font 사용
 List Box 추가
IDC_FONTLIST
 LBN_SELCHANGE, OnSelchangeFontList(), Invalidate(); 호출
 Control, CListBox, m_lbFont
 Font List 초기화
OnInitDialog
 m_lbFont.AddString("Arial");
 m_lbFont.AddString("System");
 m_lbFont.AddString("Times New Roman");
 m_lbFont.AddString("Garamond");
 m_lbFont.SelectString(0, "Arial");
OnPaint 수정


 

'IT Note > 기타언어' 카테고리의 다른 글

[MFC] Menu(1)  (0) 2008.11.24
[MFC] Bitmap  (0) 2008.11.24
[MFC] 비트맵(Bitmap) 출력  (0) 2008.11.24