[MFC] Font
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 |