[MFC] 윈도우 프로그래밍 기초 - 폰트 대화상자(CFontDialog)
안녕하세요. 지난 시간에 파일 대화상자에 대해서 열심히 학습하시고 오셨을 거라고 믿어 의심치 않습니다.
이번 시간에는 아래의 창과 같은 폰트 대화상자를 만드는 방법에 대해 소개하겠습니다.
1. 결과물
2. 실습
2-1. CFontDialog 생성자(Construtors)
|
CFontDialog(const CHARFORMAT& charformat, (Overloading) |
a. lplfnitial
LOGFONT는 폰트 정보를 담기 위한 구조체로 WinGDI.h 파일에 정의되어 있습니다.
typedef struct tagLOGFONTA |
b. dwFlags
플래그 값 |
설명 |
CF_EFFECTS |
폰트 대화상자에 효과들을 표시 |
CF_SCREENFONTS |
시스템에 설치되어 있는 폰트들의 리스트를 출력 |
c. pdcPrinter
-> CDC*d. pParentWnd
-> 폰트 대화상자의 부모 윈도우로 지정할 윈도우의 포인터
2-2. CFontDialog 멤버 함수
폰트 대화상자 클래스인 CFontDialog 클래스는 폰트와 관련한 멤버 함수
void GetCharFormat(CHARFORMAT& cf) const; // Helpers for parsing information after successful return // 현재 설정되어 있는 폰트의 정보를 획득하여 LOGFONT 구조체의 포인터를 Parameter로 전달? CString GetFaceName() const; // return the face name of the font
|
2-3. CFontDialog 완성물
여러분이 완성해야할 결과물입니다.
|
완성 결과물 |
|
|
버튼 1번 - 문자열 출력 클릭시 |
버튼 2번 - 문자열 정보 클릭시 |
|
|
출력 결과 - 문자열 출력에 대한 결과 |
출력 결과 - 문자열 정보에 대한 결과 |
2-4. 레이아웃 디자인
최종 결과물하고 동일하게 해오시면 되겠습니다.
2-5. 코드
CFontDialog dlg;
CString strText = _T("한글 english 11222334324");
if (dlg.DoModal() == IDOK) HDC hdc;
dlg.GetCurrentFont(&lf); // LOGFONT 획득 hFont = CreateFontIndirect(&lf); // 폰트 생성 TextOut(hdc, 0, 0, strText, strText.GetLength()); // 문자열 그리기
SelectObject(hdc, OldFont); // 기존 폰트 선택 }
|
if (dlg.DoModal() == IDOK) strMsg.Format( _T( "폰트명:%s, 크기:%d \n 색상RGB(%d, %d, %d)" ) ,
AfxMessageBox(strMsg);
} } |
버튼 1 - 문자열 출력 |
버튼 2 - 문자열 정보 |
직접 돌려봐야 뭔 느낌인지 알 수 있습니다.
'소프트웨어(SW) > MS - C++ (GUI) MFC' 카테고리의 다른 글
[MFC] 윈도우 프로그래밍 기초 - 프로그래스 컨트롤 (1) | 2015.03.31 |
---|---|
[MFC] 윈도우 프로그래밍 기초 - 공통 컨트롤의 이해? (1) | 2015.03.31 |
[MFC] 윈도우 프로그래밍 기초 - 쉬어가는 코너 (읽는 방법의 여러 종류) (1) | 2015.03.27 |
[MFC] 윈도우 프로그래밍 기초 - 파일 대화 상자 무작정 실습 (1) | 2015.03.27 |
[MFC] 윈도우 프로그래밍 기초 - 파일 대화 상자(CFileDialog) (1) | 2015.03.24 |