본문 바로가기
Delphi Tip/Windows

윈도우즈 GUI 기본 폰트정보 구하기

by MonoSoft 2023. 6. 7.
728x90
반응형

윈도우즈 GUI 기본 폰트정보 구하기

 

 

728x90

 

 

// 다국어 프로그램 만들때 사용해 보세요

 

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

 

type

  TForm1 = class(TForm)

  Button1: TButton;

  procedure Button1Click(Sender: TObject); private

  { Private declarations }

public

  { Public declarations }

end;

 

type

  TCharSetRec = packed record Name: String;

  ID: Integer

end;

 

const

NumCharSets = 19;

CharSets: array[0..NumCharSets - 1] of TCharSetRec = ( (Name: 'ANSI_CHARSET'; ID: 0),

                                                                                            (Name: 'DEFAULT_CHARSET'; ID: 1),

                                                                                            (Name: 'SYMBOL_CHARSET'; ID: 2),

                                                                                            (Name: 'SHIFTJIS_CHARSET'; ID: $80),

                                                                                            (Name: 'HANGEUL_CHARSET'; ID: 129),

                                                                                            (Name: 'GB2312_CHARSET'; ID: 134),

                                                                                            (Name: 'CHINESEBIG5_CHARSET'; ID: 136),

                                                                                            (Name: 'OEM_CHARSET'; ID: 255),

                                                                                            (Name: 'JOHAB_CHARSET'; ID: 130),

                                                                                            (Name: 'HEBREW_CHARSET'; ID: 177),

                                                                                            (Name: 'ARABIC_CHARSET'; ID: 178),

                                                                                            (Name: 'GREEK_CHARSET'; ID: 161),

                                                                                            (Name: 'TURKISH_CHARSET'; ID: 162),

                                                                                            (Name: 'VIETNAMESE_CHARSET'; ID: 163),

                                                                                            (Name: 'THAI_CHARSET'; ID: 222),

                                                                                            (Name: 'EASTEUROPE_CHARSET'; ID: 238),

                                                                                            (Name: 'RUSSIAN_CHARSET'; ID: 204),

                                                                                            (Name: 'MAC_CHARSET'; ID: 77),

                                                                                            (Name: 'BALTIC_CHARSET'; ID: 186)); var

 

  Form1: TForm1;

 

implementation

 

  {$R *.dfm}

 

// Windows Default GUI 폰트를 구한다

function GetDefaultUIFont(var lf: TLogFont): Boolean;

var

  font: HFONT;

begin

  Result := False;

 

  font := GetStockObject(DEFAULT_GUI_FONT);

 

  if font = NULL then Exit;

 

  if GetObject(font, sizeof(lf), @lf) = 0 then Exit;

 

  Result := True;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

  i: Integer;

  lf: TLogFont;

begin

  if not GetDefaultUIFont(lf) then Exit;

  ShowMessage(lf.lfFaceName);

  // 폰트명

  for i := 0 to NumCharSets - 1 do

    if CharSets[i].ID = lf.lfCharSet then

    begin

      ShowMessage(CharSets[i].Name); // 문자셋

      Break

    end;

  end;

end.

 

 

두번째 예)

 

function GetDefaultFontName: string;

var

  LogFont: TLogFont;

  FontHandle: HFONT;

begin

  // 기본 시스템 폰트 정보를 가져옴

  FontHandle := GetStockObject(DEFAULT_GUI_FONT);

  // 폰트 핸들을 로그 폰트 구조체에 복사

  GetObject(FontHandle, SizeOf(TLogFont), @LogFont);

  // 로그 폰트 구조체의 lfFaceName 필드에 저장된 폰트 이름을 반환

  Result := LogFont.lfFaceName;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  // 기본 폰트 이름을 얻어와 메시지로 표시

  ShowMessage('기본 폰트: ' + GetDefaultFontName);

end;

728x90
반응형

댓글