CFontDialog (폰트 설정) (출처 아르님)
CFontDialog
윈도우에서 제공하는 공통 폰트 다이얼로그 박스
Example
CTextTestView::CTextTestView()
{
m_bTransparent = FALSE; //배경의 투명 여부 판단
m_colorText = RGB(0,0,0); //폰트 컬러
m_colorBK = RGB(255,255,255); //폰트배경 컬러
m_logFont.lfHeight = 0; //m_logFont 초기화
m_logFont.lfWidth = 0;
m_logFont.lfEscapement = 0;
m_logFont.lfOrientation = 0;
m_logFont.lfWeight = FW_NORMAL;
m_logFont.lfItalic = FALSE;
m_logFont.lfUnderline = FALSE;
m_logFont.lfStrikeOut = FALSE;
m_logFont.lfCharSet = DEFAULT_CHARSET;
m_logFont.lfOutPrecision = OUT_CHARACTER_PRECIS;
m_logFont.lfClipPrecision = CLIP_CHARACTER_PRECIS;
m_logFont.lfQuality = DEFAULT_QUALITY;
m_logFont.lfPitchAndFamily = DEFAULT_PITCH|FF_DONTCARE;
strcpy(m_logFont.lfFaceName,"Arial");
}
void CTextTestView::OnDraw(CDC* pDC) //Draw함수에 의한 폰트 처리
{
CTextTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rect;
GetClientRect(&rect); //창크기 구하기
//LOGFONT로부터 글꼴을 생성
CFont newFont, *pOldFont;
newFont.CreateFontIndirect(&m_logFont);
//생성된 글꼴을 DC에 선택
pOldFont = (CFont *)pDC->SelectObject(&newFont);
pDC->SetTextColor(m_colorText);
pDC->SetBkColor(m_colorBK);
//배경 모드를 설정
if(m_bTransparent) pDC->SetBkMode(TRANSPARENT);
else pDC->SetBkMode(OPAQUE);
//텍스트를 그림
pDC->DrawText("이것은 테스트입니다. This is a test.",
&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
}
//메뉴버튼 이벤트 함수들
void CTextTestView::OnTextColor() //텍스트 컬러 바꿈
{
CColorDialog dlg;
if(dlg.DoModal()==IDOK)
{
m_colorText=dlg.GetColor();
Invalidate(); //화면 갱신
}
}
void CTextTestView::OnTextFont() //텍스트 폰트 바꿈
{
CFontDialog dlg(&m_logFont); //m_logFont에 설정값으로 초기화
if(dlg.DoModal()==IDOK)
{
dlg.GetCurrentFont(&m_logFont);
Invalidate();
}
}
void CTextTestView::OnTextBKcolor() //텍스트 배경색 바꿈
{
CColorDialog dlg;
if(dlg.DoModal()==IDOK)
{
m_colorBK=dlg.GetColor();
Invalidate();
}
}
출처 : Tong - 통동이님의 C/C++통