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

    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
    반응형

    댓글