CreateFont 와 CreateFontIndirect 는 둘다 폰트를 생성하는 함수입니다.

BOOL CreateFont(
    int nHeight, // 폰트의 높이
    int nWidth,   //폰트의 가로크기
    int nEscapement,    // escapement 벡터각도
    int nOrientation,      // 기준선(보통 수평선) 에서의 각도
    int fnWeight,           // 폰트 가중치
    DWORD fdwItalic,    // 이탤릭 속성 플러그
    DWORD fdwUnderline,   // 밑줄 속성 플러그
    DWORD fdwStrikeOut,   // 중앙선 속성 플러그
    DWORD fdwCharSet,    // 문자열 세트 명칭
    DWORD fdwOutputPrecision,   // 출력 정밀도
    DWORD fdwClipprecision,      // 클리핑 정밀도
    DWORD fdwQuality,               // 출력 문자의 질
    DWORD fdwPitchAndFamily,   // 글꼴 피치의 종류
    LPCSTR lpszFace          // 폰트체의 이름
);

CreateFontIndirect 함수는 LOGFONT 구조체를 설정하여 폰트를 만듭니다.
LOGFONT 구조체는 CreateFont 안의 인자의 값을 그대로 구조체화 한것입니다.

typedef struct tagLOGFONT { //lf
    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;
    TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;

CreateFont 를 이용할때와 CreateFontIndirect 를 이용할 때는 차이가 있습니다.
CreateFontIndirect 를 이용할때엔 가로 크기와 세로크기를 각각 10으로
설정하였다 하더라도 그 문자의 스타일에 따라 보기 좋은 값으로 약간 변합니다.
즉, CreateFontIndirect 함수를 이용하면 글자체가 좀 보기 좋게 나타납니다.
실지로 폰트를 사용할 때는 CreateFontIndirect 를 많이 사용합니다.
폰트 대화상자에서 특정 폰트를 설정하였을때 LOGFONT가 값을 받으며,
이 값을 CreateFontIndirect 에서 바로 이용할 수 있는 장점도 있습니다.
Posted by 빨강토끼
,