개발 정보/델파이

[Delphi] 델파이 Windows 시스템 폰트 불러오기

RoRoBong 2020. 11. 26. 16:39
728x90

안녕하세요

로로봉입니다 : )

오늘은 델파이에서 윈도우 폰트를 사용하는 법을 알아보겠습니다.

Windows 시스템 폰트를 불러오기 위해서 Uses 절에 Windows와 Messages 두가지 Pas파일을 Use 해주어야 합니다.

시스템 폰트를 불러와 정렬 후 리스트 박스에 추가하는 방법은 다음을 참고하면 됩니다.

procedure TfrmMain.SetFontFaceList;
var
  sList: TStringList;
  i: Integer;
  DC : HDC;
begin
  sList:=TStringList.Create;
  try
    DC := GetDC(0); // 윈도우 핸들러 얻어오기
    EnumFontFamilies(DC, nil, @EnumFamToLines, LongInt(sList)); // 시스템 폰트 불러오기
    sList.Sort; // 불러온 폰트 정렬
    
    for i:=0 to sList.Count-1 do // 리스트에 저장
      LBFont.Items.Add(sList[i]);
  finally
    FreeAndNil(sList);
  end;
end;

// EnumFontFamilies 함수에 포인터 값으로 넘겨주는 함수
function EnumFamToLines(lplf: PLOGFONT; lpntm: PNEWTEXTMETRIC; FontType: DWORD; Lines: LPARAM): Integer; stdcall;
begin
  with lplf^ do // 한글 폰트와 @붙지 않은 폰트만 검색
    if (lfCharSet=HANGEUL_CHARSET) and (Pos('@', lplf^.lfFaceName)=0) then
      TStrings(Lines).Add(lplf.lfFaceName);
  Result := 1;
end;

 

좋아요♥ + 구독 부탁드립니다 : )

728x90
반응형