현재 윈도우의 폰트 속성을 알고 싶을 경우가 있다. 폰트 속성을 알아아내기 위해서는 다음 코드를 보자.
BOOL TestDlg::OnInitDialog()
{
LOGFONT lf;
CDialogEx::OnInitDialog();
//생략
m_bigfont.CreatePointFont(200, "굴림");
GetDlgItem(IDC_EDIT)->SetFont(&m_bigfont);
GetFont()->GetLogFont(&lf);
lf.lfItalic = TRUE;
// 주어진 로그 폰트 속성을 이용하여 폰트를 생성한다.
m_stylefont.CreateFontIndirect(&lf);
GetDlgItem(IDC_EDIT)->SetFont(&m_stylefont);
//생략
return TRUE;
}
위 코드를 보면 GetFont 함수를 이용하여 현재 윈도우의 CFont 객체를 얻어오고 GetLogFont 함수를 호출하여 현재 폰트의 속성 값을 얻어올 수 있다.
MSDN 에서 LOGFONT 정보를 보면 다음과 같다.
typedef struct tagLOGFONTA {
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
CHAR lfFaceName[LF_FACESIZE];
} LOGFONTA, *PLOGFONTA, *NPLOGFONTA, *LPLOGFONTA;
lfHeight
글꼴의 문자 논리적 높이를 말한다. 문자 높이 값은 문자 셀 높이에서 내부 행간 값을 뺀 값이다. 지정된 값의 의미로는 다음과 같이 사용된다.
- 0 보다 값이 클 경우 값을 장치 단위로 변환하고 사용 가능한 글꼴의 셀 높이와 일치시킨다.
- 0 일 경우 기본 높이 값을 사용한다.
- 0 보다 작을 경우 값을 장치 단위로 변환하고 사용 가능한 글꼴의 문자 높이에 절대값을 일치시킨다.
MM_TEXT 모드의 경우 다음 공식을 사용하여 지정된 포인트 크기의 글꼴 높이를 구할 수 있다.
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
lfWidth
글꼴 문자의 논리적 평균 너비이다.
lfEscapement
폰트에 쓰여진 글꼴의 각 라인의 각도를 의미한다. (1/10 도)
lfOrientation
각 글자의 기준서의 각도를 의미한다. (1/10 도)
lfWeight
글꼴의 두껍기를 의미한다. (0~1000 사이 값을 갖는다.)
400 => 기본 700 => 볼드
0이 사용되면 글꼴의 기본 값이 사용된다.
lfItalic
글꼴의 이탤릭체 여부를 의미한다.
lfUnderline
글꼴의 밑줄 여부를 의미한다.
lfStrikeOut
글꼴의 취소선 여부를 의미한다.
lfCharSet
글꼴의 문자집합을 의미한다.
lfOutPrecision
글꼴 출력의 정밀도를 의미한다.
lfClipPrecision
글꼴 클리핑 정밀도를 의미한다. 클리핑 경계에 이는 문자를 처리 방법을 정의
lfQuality
글꼴 출력의 품질을 의미한다.
lfPichAndFamily
글꼴 피치와 계열 정보를 의미한다.
lfFaceName
글꼴의 이름을 의미한다.
'프로그래밍 > MFC/WIN32' 카테고리의 다른 글
IOCP를 이용한 OVERLAPPED 사용시 ErrorCode(6) 관련 (0) | 2022.04.06 |
---|---|
MFC 에서 마우스 클릭을 비활성화 하는 방법 (0) | 2022.03.17 |
Visual studio 디버그 빌드 배포시 종속 DLL 위치 (0) | 2021.12.29 |
MFC 다이얼로그(Dialog) 스크롤(Scroll) 적용 (0) | 2021.12.28 |