void CFontDemoView::OnPaint()
{
CPaintDC dc(this); // device context for painting
CFont Font;
CFont* pOldFont;
LOGFONT lf;
::ZeroMemory(&lf , sizeof(lf));
wsprintf(lf.lfFaceName, _T("%s"), _T("Arial")); //폰트이름은 Arial
lf.lfHeight = 30; //사이즈는 20
Font.CreateFontIndirect(&lf); //LOGFONT 구조체 정보를 기반으로 CFont 클래스 객체를 생성함.
//보통 이렇게 LOGFONT 구조체에 크기와 이름값만 명시하고 쓴다.
pOldFont = dc.SelectObject(&Font);
dc.TextOut(10,10, _T("this is text test with logfont"));
dc.SelectObject(pOldFont);
Font.DeleteObject(); //폰트객체삭제
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
// 그리기 메시지에 대해서는 CView::OnPaint()을(를) 호출하지 마십시오.
}
경우에 따라 어떤 글골이 시스템에 설치되어있는지 확인할 때가 있는데, 이때는 ::EnumFonts() 함수나
::EnumFontFamiliesEx() 함수를 이용하면 된다.
보통 문자열 출력에는 TextOut () 함수를 많이 쓰는데, 치명적인 약점은 바로 탭 문자(\t) 가 안된다는 것이다.
이것은 텍스트 편집기를 개발하는 상황에는 굉장히 치명적이다. 이 경우에는 TabbedTextOut() 함수를 사용한다.
int nTabStop = 40; //탭 사이즈가 40임을 명시
dc.TabbedTextOut(20,70,_T("\tText String"), 1, &nTabStop, 20); //직접 \t 를 사용해서 탭출력, 반환값은 CSize, 주로 좌표보다는 폭과 높이를 명시하는 경우에 사용함. (cx,cy) , 이것은 에디트 컨트롤을 직접 구현할 때 중요하다. 아니면 신텍스 컬러링 편집기 구현할때나 쓰인다.
dc.SelectObject(pOldFont);
'Windows > MFC' 카테고리의 다른 글
DrawText() 함수 예제 및 연습 (0) | 2011.11.13 |
---|---|
직접 버튼 그리기 (0) | 2011.11.13 |
키보드 입력 (0) | 2011.11.12 |
MFC 코드의 흐름 (1) | 2011.11.12 |
메시지맵 (MessageMap) (0) | 2011.11.12 |