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

+ Recent posts